public void ApplyProperties(Component component, GameObject root)
        {
            var path = PropertyTransformer.TransformToStringPath(component);

            using (var serializer = new SerializedObject(component))
            {
                ApplyArrayToProperty(serializer.FindProperty("m_Colliders"), Colliders.Select(w => ToActualObject(path, w, root)).ToList());
                serializer.FindProperty("m_Damping").floatValue = Damping;
                serializer.FindProperty("m_DampingDistrib").animationCurveValue = DampingDistrib;
                serializer.FindProperty("m_DistanceToObject").floatValue        = DistanceToObject;
                serializer.FindProperty("m_DistantDisable").boolValue           = DistantDisable;
                serializer.FindProperty("m_Elasticity").floatValue = Elasticity;
                serializer.FindProperty("m_ElasticityDistrib").animationCurveValue = ElasticityDistrib;
                serializer.FindProperty("m_EndLength").floatValue   = EndLength;
                serializer.FindProperty("m_EndOffset").vector3Value = EndOffset;
                ApplyArrayToProperty(serializer.FindProperty("m_Exclusions"), Exclusion.Select(w => ToActualObject(path, w, root)).ToList());
                serializer.FindProperty("m_Force").vector3Value                   = Force;
                serializer.FindProperty("m_FreezeAxis").enumValueIndex            = FreezeAxis;
                serializer.FindProperty("m_Gravity").vector3Value                 = Gravity;
                serializer.FindProperty("m_Inert").floatValue                     = Inert;
                serializer.FindProperty("m_InertDistrib").animationCurveValue     = InertDistrib;
                serializer.FindProperty("m_Radius").floatValue                    = Radius;
                serializer.FindProperty("m_RadiusDistrib").animationCurveValue    = RadiusDistrib;
                serializer.FindProperty("m_ReferenceObject").objectReferenceValue = ToActualObject(path, ReferenceObject, root);
                serializer.FindProperty("m_Root").objectReferenceValue            = ToActualObject(path, RootReference, root);
                serializer.FindProperty("m_Stiffness").floatValue                 = Stiffness;
                serializer.FindProperty("m_StiffnessDistrib").animationCurveValue = StiffnessDistrib;
                serializer.FindProperty("m_UpdateMode").enumValueIndex            = UpdateMode;
                serializer.FindProperty("m_UpdateRate").floatValue                = UpdateRate;

                serializer.ApplyModifiedPropertiesWithoutUndo();
            }
        }
Exemplo n.º 2
0
        private void Awake()
        {
            Colliders    = GetComponentsInChildren <Collider>(true);
            MainCollider = GetComponentInChildren <Collider>(true);
            if (MainCollider == null)
            {
                throw new NullReferenceException("Hitbox component does not have a collider!");
            }

            Rigidbodies = Colliders.Select(c => c.GetComponent <Rigidbody>()).Where(rg => rg != null).ToArray();

            // by default all rigidbody should by inactive
            SetRigidbodyActive(false);
        }
Exemplo n.º 3
0
    void MakeGameObject()
    {
        int num            = CompactIndex + 1;
        var renderMesh     = Renderers.First().ToMesh($"RenderMesh{num:00}");
        var colliderMeshes = Colliders.Select((c, i) => c.ToMesh($"ColliderMesh{num:00}_{i + 1:00}"));
        var material       = Resources.Load($"Material{num:00}") as Material;

        var go = new GameObject($"Tile{num}", typeof(MeshFilter), typeof(MeshRenderer), typeof(Rigidbody), typeof(TileInstance));

        go.SetActive(false);
        go.layer = 9;

        var filter = go.GetComponent <MeshFilter>();

        filter.mesh = renderMesh;

        var renderer = go.GetComponent <MeshRenderer>();

        renderer.material = material;

        var rb = go.GetComponent <Rigidbody>();

        rb.isKinematic  = MakeKinematic;
        rb.centerOfMass = Centroid;
        rb.mass         = Mass;
        // rb.drag = 1f;
        // rb.angularDrag = 1f;

        foreach (var mesh in colliderMeshes)
        {
            var collider = go.AddComponent <MeshCollider>();
            collider.convex     = true;
            collider.sharedMesh = mesh;
        }

        //var collider = go.AddComponent<BoxCollider>();
        _gameObject = go;
    }