コード例 #1
0
        [MenuItem("GameObject/Create Other/BulletForUnity/BSoftBody/BSoftBodyWMesh")]  //right click menu
        static void CreateBSoftWithMesh()
        {
            BAnyMeshSettings settings = new BAnyMeshSettings();

            settings.meshType      = PrimitiveMeshOptions.Bunny;
            Selection.activeObject = BSoftBodyWMesh.CreateNew(EditorHelpers.GetCameraRaycastPosition(), Quaternion.identity, settings.Build(), true, SBSettingsPresets.ShapeMatching);
            PostCreateObject();
        }
コード例 #2
0
        public override Mesh Build()
        {
            BAnyMeshSettings settings = this;
            Mesh             mesh     = null;

            switch (settings.meshType)
            {
            case PrimitiveMeshOptions.UserDefinedMesh:
                //Need to copy mesh from sharedMesh or we cant modify the mesh!
                if (settings.userMesh == null)     //fill in something
                {
                    settings.userMesh = ProceduralPrimitives.CreateMeshBox(settings.extents.x, settings.extents.x, settings.extents.x);
                    Debug.Log("Must provide a mesh for UserDefinedMesh setting.");
                }

                mesh = (Mesh)GameObject.Instantiate(settings.userMesh);
                break;

            case PrimitiveMeshOptions.Box:
                mesh = ProceduralPrimitives.CreateMeshBox(settings.extents.x, settings.extents.y, settings.extents.z);
                break;

            case PrimitiveMeshOptions.Sphere:
                mesh = ProceduralPrimitives.CreateMeshSphere(settings.radius, settings.numLongitudeLines, settings.numLatitudeLines);
                break;

            case PrimitiveMeshOptions.Cylinder:
                mesh = ProceduralPrimitives.CreateMeshCylinder(settings.height, settings.radius, settings.nbSides);
                break;

            case PrimitiveMeshOptions.Cone:
                mesh = ProceduralPrimitives.CreateMeshCone(settings.height, settings.radius, 0f, settings.nbSides);
                break;

            case PrimitiveMeshOptions.Pyramid:
                mesh = ProceduralPrimitives.CreateMeshPyramid(settings.height, settings.radius);
                break;

            case PrimitiveMeshOptions.Bunny:
                //TODO put this back
                mesh = null;     //ProceduralPrimitives.BuildMeshFromData(SoftDemo.BunnyMesh.Vertices, SoftDemo.BunnyMesh.Indices);
                break;

            case PrimitiveMeshOptions.Plane:
                mesh = ProceduralPrimitives.CreateMeshPlane(settings.length, settings.width, settings.resX, settings.resZ);
                break;

            default:
                break;
            }

            return(mesh);
        }