Esempio n. 1
0
        public List <CCPoint> GetPoints()
        {
            List <CCPoint> outPoints = new List <CCPoint>();

            // int i = 0;
            foreach (var shape in _info.getShapes())
            {
                outPoints.Add(PhysicsHelper.cpVectToCCPoint(((cpSegmentShape)shape).a));
            }
            return(outPoints);
        }
Esempio n. 2
0
        public List <CCPoint> GetPoints()
        {
            List <CCPoint> outPoints = new List <CCPoint>();

            foreach (var shape in _info.getShapes())
            {
                outPoints.Add(PhysicsHelper.cpVectToCCPoint(((cpSegmentShape)shape).a));
            }

            outPoints.Add(PhysicsHelper.cpVectToCCPoint(((cpSegmentShape)_info.getShapes().LastOrDefault()).a));

            return(outPoints);
        }
Esempio n. 3
0
        public override CCPoint GetCenter()
        {
            var shapes = _info.getShapes();
            int count  = (int)shapes.Count;

            cpVect[] points = new cpVect[count];
            int      i      = 0;

            foreach (var shape in shapes)
            {
                points[i++] = ((cpSegmentShape)shape).a;
            }

            cpVect center = cp.CentroidForPoly(count, points);

            return(PhysicsHelper.cpVectToCCPoint(center));
        }
Esempio n. 4
0
        public void GenerateContactData()
        {
            if (_contactInfo == null)
            {
                return;
            }

            cpArbiter arb = (cpArbiter)_contactInfo;

            _preContactData = _contactData;
            _contactData    = new CCPhysicsContactData();

            for (int i = 0; i < _contactData.count && i < CCPhysicsContactData.POINT_MAX; ++i)
            {
                _contactData.points[i] = PhysicsHelper.cpVectToCCPoint(arb.GetPointA(i));
            }

            _contactData.normal = _contactData.count > 0 ? PhysicsHelper.cpVectToCCPoint(arb.GetNormal()) : CCPoint.Zero;
        }
Esempio n. 5
0
 public CCPoint GetPoint(int i)
 {
     return(PhysicsHelper.cpVectToCCPoint(((cpPolyShape)_info.GetShapes().FirstOrDefault()).GetVert(i)));
 }
Esempio n. 6
0
 /** get center of the polyon points */
 public static CCPoint GetPolygonCenter(CCPoint[] points, int count)
 {
     return(PhysicsHelper.cpVectToCCPoint(cp.CentroidForPoly(count, PhysicsHelper.CCPointsTocpVects(points))));
 }
Esempio n. 7
0
 public CCPoint GetPointB()
 {
     return(PhysicsHelper.cpVectToCCPoint(((cpSegmentShape)(_info.getShapes().FirstOrDefault())).tb));
 }
Esempio n. 8
0
 public override CCPoint GetOffset()
 {
     return(PhysicsHelper.cpVectToCCPoint((_info.getShapes().FirstOrDefault() as cpCircleShape).GetOffset()));
 }
Esempio n. 9
0
 public CCPoint GetAnchr2()
 {
     return(PhysicsHelper.cpVectToCCPoint(_info.getJoints().FirstOrDefault().GetAnchorB()));
 }
Esempio n. 10
0
 public CCPoint GetGrooveA()
 {
     return(PhysicsHelper.cpVectToCCPoint(_info.getJoints().FirstOrDefault().GetGrooveA()));
 }
Esempio n. 11
0
 /** get surface velocity between two bodies*/
 public CCPoint GetSurfaceVelocity()
 {
     return(PhysicsHelper.cpVectToCCPoint((_contactInfo as cpArbiter).surface_vr));
 }
Esempio n. 12
0
        /** Get phsyics shapes that contains the point. */
        public List <CCPhysicsShape> GetShapes(CCPoint point)
        {
            List <CCPhysicsShape> arr = new List <CCPhysicsShape>();

            this._info.getSpace().PointQuery(
                PhysicsHelper.CCPointToCpVect(point), 0, new cpShapeFilter(cp.NO_GROUP, cp.ALL_LAYERS, cp.ALL_LAYERS),
                (s, v1, f, v2, o) => CCPhysicsWorldCallback.GetShapesAtPointFunc(s, f, PhysicsHelper.cpVectToCCPoint(v1), ref arr),
                null
                );

            return(arr);
        }
Esempio n. 13
0
        /** Searches for physics shapes that intersects the ray. */
        public void RayCast(Func <CCPhysicsWorld, CCPhysicsRayCastInfo, object, bool> func, CCPoint point1, CCPoint point2, object data)
        {
            cp.AssertWarn(func != null, "func shouldn't be nullptr");

            if (func != null)
            {
                CCRayCastCallbackInfo info = new CCRayCastCallbackInfo(this, func, point1, point2, data);
                //Action<cpShape, cpVect, cpVect, float, object> func
                CCPhysicsWorldCallback.continues = true;

                this._info.getSpace().SegmentQuery(
                    PhysicsHelper.CCPointToCpVect(point1),
                    PhysicsHelper.CCPointToCpVect(point2), 1f,
                    new cpShapeFilter(cp.NO_GROUP, cp.ALL_LAYERS, cp.ALL_LAYERS),
                    (shape, v1, v2, f, o) => CCPhysicsWorldCallback.RayCastCallbackFunc(shape, f, PhysicsHelper.cpVectToCCPoint(v1), ref info), data
                    );
            }
        }