Пример #1
0
        public BEPUphysics.ISpaceObject CreateCollision(JMapObjectData block)
        {
            BEPUphysics.ISpaceObject collision = null;
            if (block.colliderTypes == 0)
            {
                BEPUphysics.EntityStateManagement.MotionState ms = new BEPUphysics.EntityStateManagement.MotionState();
                ms.Position    = new BEPUutilities.Vector3(block.mapPos.x, block.mapPos.y, block.mapPos.z);
                ms.Orientation = new BEPUutilities.Quaternion(block.mapRot.x, block.mapRot.y, block.mapRot.z, block.mapRot.w);

                collision = new Box(ms, block.mapScale.x, 1f, block.mapScale.y);
            }
            else
            {
                var   vertices = new BEPUutilities.Vector3[block.meshColliderVertices.Length];
                int[] indices  = new int[block.meshColliderIndices.Length];
                for (int i = 0; i < vertices.Length; ++i)
                {
                    vertices[i] = new BEPUutilities.Vector3(block.meshColliderVertices[i].x, block.meshColliderVertices[i].y, block.meshColliderVertices[i].z);
                }
                for (int i = 0; i < indices.Length; ++i)
                {
                    indices[i] = block.meshColliderIndices[i];
                }

                var Position    = new BEPUutilities.Vector3(block.mapPos.x, block.mapPos.y, block.mapPos.z);
                var Orientation = new BEPUutilities.Quaternion(block.mapRot.x, block.mapRot.y, block.mapRot.z, block.mapRot.w);

                var staticMesh = new BEPUphysics.BroadPhaseEntries.StaticMesh(vertices, indices, new BEPUutilities.AffineTransform(new BEPUutilities.Vector3(0.1f, 0.1f, 0.1f), Orientation, Position));
                //staticMesh.Sidedness = BEPUutilities.TriangleSidedness.DoubleSided;
                collision = staticMesh;
            }
            space.Add(collision);
            return(collision);
        }
        public GameObjectReference(string cellContainerId, string baseObjectId)
        {
            this.cellContainerId = cellContainerId;
            this.baseObjectId    = baseObjectId;
            isOn           = true;
            pos            = Vector3.Zero;
            rotation       = Matrix.Identity;
            rotationValues = Vector3.Zero;
            scale          = new Vector3(1, 1, 1);

            physicsObj      = null;
            entityTransform = Matrix.Identity;

            target    = new Vector3(0, 0, 0);
            endPoint  = new Vector3(-10, 3, 10);
            _lerpInc  = 0.2f;
            color     = new Vector3(1, 1, 1);
            intensity = 1;
            maxRange  = 30;
        }