Beispiel #1
0
        public CCPhysicsBody j2cpBody( JObject bodyValue)
        {
            CCPhysicsBody body = new CCPhysicsBody();
            SetBodyTypeFromInt(body, (int)bodyValue.GetValue("type"));
            //int i = 0;

            JArray fixtureValues = (JArray)bodyValue["fixture"];
            if (null != fixtureValues)
            {
                List<CCPhysicsShape> shape;
                int numFixtureValues = fixtureValues.Count;
                for (int i = 0; i < numFixtureValues; i++)
                {
                    JObject fixtureValue = (JObject)fixtureValues[i];
                    shape = j2cpShape(fixtureValue, body.BodyType);
                    readCustomPropertiesFromJson(shape, fixtureValue);
                    body.AddShape(shape,true);
                }
            }

            body.Position = jsonToPoint("position", bodyValue);
            body.SetAngle(jsonToFloat("angle", bodyValue));
            body.SetVelocity(jsonToPoint("linearVelocity", bodyValue));
            body.SetAngularVelocity( jsonToFloat("angularVelocity", bodyValue));
            //body. linearDamping = jsonToFloat("linearDamping", bodyValue, -1, 0);
            //body.set angularDamping = jsonToFloat("angularDamping", bodyValue, -1, 0);
            //body.gravityScale = jsonToFloat("gravityScale", bodyValue, -1, 1);

            //body.allowSleep = bodyValue["allowSleep"] == null ? false : (bool)bodyValue["allowSleep"];
            //body.awake =;
            var awake = bodyValue["awake"] == null ? false : (bool)bodyValue["awake"];
            if (!awake)
                body.Body.Sleep();

            var fixedRotation = bodyValue["fixedRotation"] == null ? false : (bool)bodyValue["fixedRotation"];
            if (fixedRotation)
                body.Moment = cp.Infinity;

            //body.bullet = bodyValue["bullet"] == null ? false : (bool)bodyValue["bullet"];

            //bodyDef.active = bodyValue["active"] == null ? false : (bool)bodyValue["active"];

            //body.active = true;

            String bodyName = bodyValue["name"] == null ? "" : (string)bodyValue["active"];
            if (!string.IsNullOrEmpty(bodyName))
                SetBodyName(body, bodyName);

            // may be necessary if user has overridden mass characteristics
            //b2MassData massData = new b2MassData();
            if (body.BodyType == cpBodyType.DYNAMIC)
            body.Body.SetMass(jsonToFloat("massData-mass", bodyValue));
            //massData.mass = ;
            body.Body.SetCenterOfGravity(jsonToVec("massData-center", bodyValue));
            //massData.center =;

            return body;
        }