コード例 #1
0
        /// <summary>
        /// The AddPrimShape calls are pseudo synchronous by default.
        /// </summary>
        /// <param name="primName"></param>
        /// <param name="pbs"></param>
        /// <param name="position"></param>
        /// <param name="size"></param>
        /// <param name="rotation"></param>
        /// <returns></returns>
        public override PhysicsActor AddPrimShape(string primName, AddPrimShapeFlags flags, BulkShapeData shapeData)
        {
            Commands.CreateObjectCmd createObj = new Commands.CreateObjectCmd(
                null, primName, shapeData.Pbs, shapeData.Position, shapeData.Size, shapeData.Rotation, shapeData.Velocity,
                shapeData.AngularVelocity, Meshing.MeshingStage.SCULPT_MESH_LOD, flags, (Material)shapeData.Material,
                shapeData.PhysicsProperties, shapeData.SerializedShapes, shapeData.ObjectReceivedOn);

            this.QueueCommand(createObj);

            createObj.FinshedEvent.Wait(); //wait for meshing and all prerequisites to complete
            createObj.Dispose();

            return(createObj.FinalPrim);
        }
コード例 #2
0
        public override void BulkAddPrimShapes(ICollection<BulkShapeData> shapeData, AddPrimShapeFlags flags)
        {
            // Called on restore of objects when region boots up.  Other times as well, but that's the critical.
            AddPrimShapeFlags _flags = flags;
            ICollection<BulkShapeData> _shapes = shapeData;
            int _totalNumShapes = _shapes.Count;

            bool _rootHasVdSet = false;
            bool isPhysical = (_flags & PhysicsScene.AddPrimShapeFlags.Physical) != 0;

            //we have all the shapes for the parent and all children, time to construct the group
            bool first = true;
            BasicPrim rootPrim = null;

            //CollisionGroupFlag collisionGroup = (_flags & PhysicsScene.AddPrimShapeFlags.Phantom) == 0 ? CollisionGroupFlag.Normal : CollisionGroupFlag.PhysicalPhantom;
            foreach (BulkShapeData shape in _shapes)
            {
                if (first)
                {
                    BasicPhysicsProperties properties = BasicPhysicsProperties.DeserializeOrCreateNew(this, shape.Material, shape.PhysicsProperties);
                    _rootHasVdSet = properties.VolumeDetectActive;

                    if (_rootHasVdSet)
                    {
                        isPhysical = false;
                    }

                    rootPrim = new BasicPrim(this, shape.Pbs, shape.Position, shape.Rotation, /*_newPrimaryShape, actor, */
                        isPhysical, properties/*, collisionGroup*/);

                    shape.OutActor = rootPrim;

                    first = false;
                }
                else
                {
                    BasicPhysicsProperties properties = BasicPhysicsProperties.DeserializeOrCreateNew(this, shape.Material, shape.PhysicsProperties);

                    BasicPrim childPrim = new BasicPrim(rootPrim, this, shape.Pbs, shape.Position, shape.Rotation, /*phyShape, 
                        null,*/ isPhysical, properties/*, collisionGroup*/);
                    rootPrim.LinkPrimAsChildSync(/*phyShape, */childPrim, shape.Position, shape.Rotation, true);

                    shape.OutActor = childPrim;
                }
            }
        }
コード例 #3
0
ファイル: PhysxScene.cs プロジェクト: kf6kjg/halcyon
        public override void BulkAddPrimShapes(ICollection<BulkShapeData> shapeData, AddPrimShapeFlags flags)
        {
            Commands.BulkCreateObjectCmd createObjs = new Commands.BulkCreateObjectCmd(flags, shapeData);
            this.QueueCommand(createObjs);

            createObjs.FinishedEvent.Wait(); //wait for meshing and all prerequisites to complete

            createObjs.Dispose();
        }
コード例 #4
0
ファイル: PhysxScene.cs プロジェクト: kf6kjg/halcyon
        /// <summary>
        /// The AddPrimShape calls are pseudo synchronous by default.
        /// </summary>
        /// <param name="primName"></param>
        /// <param name="pbs"></param>
        /// <param name="position"></param>
        /// <param name="size"></param>
        /// <param name="rotation"></param>
        /// <returns></returns>
        public override PhysicsActor AddPrimShape(string primName, AddPrimShapeFlags flags, BulkShapeData shapeData)
        {
            Commands.CreateObjectCmd createObj = new Commands.CreateObjectCmd(
                null, primName, shapeData.Pbs, shapeData.Position, shapeData.Size, shapeData.Rotation, shapeData.Velocity, 
                shapeData.AngularVelocity, Meshing.MeshingStage.SCULPT_MESH_LOD, flags, (Material)shapeData.Material, 
                shapeData.PhysicsProperties, shapeData.SerializedShapes, shapeData.ObjectReceivedOn);

            this.QueueCommand(createObj);

            createObj.FinshedEvent.Wait(); //wait for meshing and all prerequisites to complete
            createObj.Dispose();

            return createObj.FinalPrim;
        }
コード例 #5
0
ファイル: PhysxScene.cs プロジェクト: swipswaps/halcyon
        public override void BulkAddPrimShapes(ICollection <BulkShapeData> shapeData, AddPrimShapeFlags flags)
        {
            Commands.BulkCreateObjectCmd createObjs = new Commands.BulkCreateObjectCmd(flags, shapeData);
            this.QueueCommand(createObjs);

            createObjs.FinishedEvent.Wait(); //wait for meshing and all prerequisites to complete

            createObjs.Dispose();
        }
コード例 #6
0
 public override void BulkAddPrimShapes(ICollection <BulkShapeData> shapeData, AddPrimShapeFlags flags)
 {
     // TODO maybe
 }
コード例 #7
0
        /*
         * public override PhysicsActor AddPrim(OpenMetaverse.Vector3 position, OpenMetaverse.Vector3 size, Quaternion rotation)
         * {
         *  return null;
         * }
         */

        public override PhysicsActor AddPrimShape(string primName, AddPrimShapeFlags flags, BulkShapeData shapeData)
        {
            return(null);
        }
コード例 #8
0
 public override void BulkAddPrimShapes(ICollection<BulkShapeData> shapeData, AddPrimShapeFlags flags)
 {
     // TODO maybe
 }
コード例 #9
0
        /*
        public override PhysicsActor AddPrim(OpenMetaverse.Vector3 position, OpenMetaverse.Vector3 size, Quaternion rotation)
        {
            return null;
        }
*/

        public override PhysicsActor AddPrimShape(string primName, AddPrimShapeFlags flags, BulkShapeData shapeData)
        {
            return null;
        }
コード例 #10
0
 /// <summary>
 /// Adds all the shapes for a prim and its children
 /// </summary>
 /// <param name="parent"></param>
 /// <param name="primName"></param>
 /// <param name="shapeData"></param>
 /// <param name="flags"></param>
 /// <returns></returns>
 public abstract void BulkAddPrimShapes(ICollection <BulkShapeData> shapeData, AddPrimShapeFlags flags);
コード例 #11
0
 public abstract PhysicsActor AddPrimShape(string primName, AddPrimShapeFlags flags, BulkShapeData shapeData);
コード例 #12
0
ファイル: PhysicsScene.cs プロジェクト: zwagoth/halcyon
 public abstract PhysicsActor AddPrimShape(string primName, AddPrimShapeFlags flags, BulkShapeData shapeData);
コード例 #13
0
ファイル: PhysicsScene.cs プロジェクト: zwagoth/halcyon
 /// <summary>
 /// Adds all the shapes for a prim and its children
 /// </summary>
 /// <param name="parent"></param>
 /// <param name="primName"></param>
 /// <param name="shapeData"></param>
 /// <param name="flags"></param>
 /// <returns></returns>
 public abstract void BulkAddPrimShapes(ICollection<BulkShapeData> shapeData, AddPrimShapeFlags flags);
コード例 #14
0
ファイル: BasicScene.cs プロジェクト: kf6kjg/halcyon
        public override PhysicsActor AddPrimShape(string primName, AddPrimShapeFlags flags, BulkShapeData shapeData)
        {
            byte[] serializedPhysicsProperties = shapeData.PhysicsProperties;
            BasicPhysicsProperties properties = BasicPhysicsProperties.DeserializeOrCreateNew(this, shapeData.Material, serializedPhysicsProperties);

            bool isPhysical = (flags & PhysicsScene.AddPrimShapeFlags.Physical) != 0;
            return new BasicPrim(this, shapeData.Pbs, shapeData.Position, shapeData.Rotation, /*Shape, Actor,*/ isPhysical, properties/*, collisionGroup*/);
        }