示例#1
0
文件: VCI_vci.cs 项目: oocytanb/VCI
        public static Joint AddJointComponent(GameObject go, glTF_VCAST_vci_joint joint, List <Transform> nodes)
        {
            var result = GetJoint(go, joint);

            if (joint.nodeIndex != -1)
            {
                var rigidbody = nodes[joint.nodeIndex].GetComponent <Rigidbody>();
                if (rigidbody == null)
                {
                    Debug.LogWarning("AddJointComponent connect RigidBody is not found.");
                    return(null);
                }

                result.connectedBody = rigidbody;
            }

            // 共通パラメータ
            result.anchor = new Vector3(joint.anchor[0], joint.anchor[1], joint.anchor[2]).ReverseZ();
            result.axis   = new Vector3(joint.axis[0], joint.axis[1], joint.axis[2]).ReverseZ();
            result.autoConfigureConnectedAnchor = joint.autoConfigureConnectedAnchor;
            result.connectedAnchor =
                new Vector3(joint.connectedAnchor[0], joint.connectedAnchor[1], joint.connectedAnchor[2]).ReverseZ();
            result.enableCollision     = joint.enableCollision;
            result.enablePreprocessing = joint.enablePreprocessing;
            result.massScale           = joint.massScale;
            result.connectedMassScale  = joint.connectedMassScale;


            // 個別パラメータ
            if (result.GetType() == typeof(HingeJoint))
            {
                var hinge = result as HingeJoint;

                // spring
                hinge.useSpring = joint.useSpring;
                hinge.spring    = new JointSpring()
                {
                    spring         = joint.spring.spring,
                    damper         = joint.spring.damper,
                    targetPosition = joint.spring.targetPosition
                };

                // limits
                hinge.useLimits = joint.useLimits;
                hinge.limits    = new JointLimits()
                {
                    min               = joint.limits.min,
                    max               = joint.limits.max,
                    bounciness        = joint.limits.bounciness,
                    bounceMinVelocity = joint.limits.bounceMinVelocity,
                    contactDistance   = joint.limits.contactDistance
                };
            }
            else if (result.GetType() == typeof(SpringJoint))
            {
                var spring = result as SpringJoint;
                spring.spring      = joint.spring.spring;
                spring.damper      = joint.spring.damper;
                spring.minDistance = joint.spring.minDistance;
                spring.maxDistance = joint.spring.maxDistance;
                spring.tolerance   = joint.spring.tolerance;
            }

            return(result);
        }
        public static void Serialize_vci_joints_ITEM(JsonFormatter f, glTF_VCAST_vci_joint value)
        {
            f.BeginMap();


            if (!string.IsNullOrEmpty(value.type))
            {
                f.Key("type");
                f.Value(value.type);
            }

            if (true)
            {
                f.Key("nodeIndex");
                f.Value(value.nodeIndex);
            }

            if (value.anchor != null && value.anchor.Length >= 3)
            {
                f.Key("anchor");
                Serialize_vci_joints__anchor(f, value.anchor);
            }

            if (value.axis != null && value.axis.Length >= 3)
            {
                f.Key("axis");
                Serialize_vci_joints__axis(f, value.axis);
            }

            if (true)
            {
                f.Key("autoConfigureConnectedAnchor");
                f.Value(value.autoConfigureConnectedAnchor);
            }

            if (value.connectedAnchor != null && value.connectedAnchor.Length >= 3)
            {
                f.Key("connectedAnchor");
                Serialize_vci_joints__connectedAnchor(f, value.connectedAnchor);
            }

            if (true)
            {
                f.Key("enableCollision");
                f.Value(value.enableCollision);
            }

            if (true)
            {
                f.Key("enablePreprocessing");
                f.Value(value.enablePreprocessing);
            }

            if (true)
            {
                f.Key("massScale");
                f.Value(value.massScale);
            }

            if (true)
            {
                f.Key("connectedMassScale");
                f.Value(value.connectedMassScale);
            }

            if (true)
            {
                f.Key("useSpring");
                f.Value(value.useSpring);
            }

            if (value.spring != null)
            {
                f.Key("spring");
                Serialize_vci_joints__spring(f, value.spring);
            }

            if (true)
            {
                f.Key("useLimits");
                f.Value(value.useLimits);
            }

            if (value.limits != null)
            {
                f.Key("limits");
                Serialize_vci_joints__limits(f, value.limits);
            }

            f.EndMap();
        }