コード例 #1
0
        // --------------------------------------------------------------- NewHole
        void NewHole()
        {
            HOLE_NUM++;
            STROKE_NUM = 0;

            HoleInfo info = CourseInfo[HOLE_NUM];

            int yards = info.Yards;  // from tee to cup
            int par   = info.Par;
            var cup   = new CircleGameObj(0, 0, 0, GameObjType.CUP);
            var green = new CircleGameObj(0, 0, 10, GameObjType.GREEN);

            var fairway = new RectGameObj(0 - (FairwayWidth / 2),
                                          0 - (green.Radius + FairwayExtension),
                                          FairwayWidth,
                                          yards + (green.Radius + FairwayExtension) + 1,
                                          GameObjType.FAIRWAY);

            var rough = new RectGameObj(fairway.X - RoughAmt,
                                        fairway.Y - RoughAmt,
                                        fairway.Width + (2 * RoughAmt),
                                        fairway.Length + (2 * RoughAmt),
                                        GameObjType.ROUGH);

            BALL = new Ball(0, yards, 0, GameObjType.BALL);

            ScoreCardStartNewHole();

            holeGeometry = new HoleGeometry(cup, green, fairway, rough, info.Hazard);

            w("                |> " + HOLE_NUM);
            w("                |        ");
            w("                |        ");
            w("          ^^^^^^^^^^^^^^^");

            Console.WriteLine("Hole #{0}. You are at the tee. Distance {1} yards, par {2}.", HOLE_NUM, info.Yards, info.Par);
            w(info.Description);

            TeeUp();
        }
コード例 #2
0
ファイル: Settings.cs プロジェクト: spi8823/PlasmaSimulation
        public HoleGeometrySetting()
        {
            HoleGeometry = new HoleGeometry(
                100, 0.8, Atom.ReflectionPattern.Specularly,
                new CylinderReflector(0, Vector.Zero, Vector.Forward, 40, 2.5),
                new CylinderReflector(3, Vector.Forward * 40, Vector.Forward, 10, 2.5),
                new Hole(1, Vector.Forward * 50, Vector.Forward, 5),
                new Shield(2, Vector.Forward * 60, Vector.Forward, 16)
                );

            MinimumReflectionCoefficient  = 0;
            MaximumReflectionCoefficient  = 1;
            ReflectionCoefficientInterval = 0.1;

            MinimumRadius  = 0;
            MaximumRadius  = 7.5;
            RadiusInterval = 0.5;

            SimulationCount   = 100000;
            ReflectionLimit   = 100;
            ReflectionPattern = Atom.ReflectionPattern.Specularly;

            CameraPosition = new System.Windows.Media.Media3D.Point3D();
        }
コード例 #3
0
    // Start is called before the first frame update
    async void Start()
    {
        Scoreboard.gameObject.SetActive(false);
        var triggerVolume = GetComponent <Collider>();

        triggerVolume.bounds.size.Set(20, 5, 1);
        if (mesh == null)
        {
            var holeVertices    = HoleGeometry.Create(width, height, minRadius, maxRadius, numVertices);
            int numHoleVertices = holeVertices.Length;

            var vertices  = new Vector3[2 * numHoleVertices + 8];
            var uv        = new Vector2[2 * numHoleVertices + 8];
            var triangles = new int[][] { new int[3 * 4 * numVertices + 3 * 4], new int[3 * 2 * numVertices] };
            for (int i = 0; i < numHoleVertices; i += 2)
            {
                int hv0 = i, hv1 = i + 1, hv2 = (i + 2) % numHoleVertices, hv3 = (i + 3) % numHoleVertices;
                int v0 = hv0, v1 = hv1, v2 = hv2, v3 = hv3;
                int v0p = v0 + numHoleVertices, v1p = v1 + numHoleVertices, v2p = v2 + numHoleVertices, v3p = v3 + numHoleVertices;

                vertices[v0]  = new Vector3(holeVertices[hv0].x, holeVertices[hv0].y);
                vertices[v1]  = new Vector3(holeVertices[hv1].x, holeVertices[hv1].y);
                vertices[v0p] = new Vector3(holeVertices[hv0].x, holeVertices[hv0].y, depth);
                vertices[v1p] = new Vector3(holeVertices[hv1].x, holeVertices[hv1].y, depth);

                uv[v0]  = new Vector2(holeVertices[hv0].x / totalWidth + 0.5f, holeVertices[hv0].y / height + 0.5f);
                uv[v1]  = new Vector2(holeVertices[hv1].x / totalWidth + 0.5f + Random.Range(-0.01f, 0.01f), holeVertices[hv1].y / height + 0.5f + Random.Range(-0.01f, 0.01f));
                uv[v0p] = uv[v0];
                uv[v1p] = uv[v1];

                triangles[0][6 * i]     = v2;
                triangles[0][6 * i + 1] = v1;
                triangles[0][6 * i + 2] = v0;

                triangles[0][6 * i + 3] = v1;
                triangles[0][6 * i + 4] = v2;
                triangles[0][6 * i + 5] = v3;

                triangles[0][6 * i + 6] = v0p;
                triangles[0][6 * i + 7] = v1p;
                triangles[0][6 * i + 8] = v2p;

                triangles[0][6 * i + 9]  = v3p;
                triangles[0][6 * i + 10] = v2p;
                triangles[0][6 * i + 11] = v1p;

                triangles[1][3 * i]     = v1;
                triangles[1][3 * i + 1] = v3p;
                triangles[1][3 * i + 2] = v1p;

                triangles[1][3 * i + 3] = v3;
                triangles[1][3 * i + 4] = v3p;
                triangles[1][3 * i + 5] = v1;
            }

            vertices[2 * numHoleVertices]     = new Vector3(-totalWidth / 2.0f, height / 2.0f);
            vertices[2 * numHoleVertices + 1] = new Vector3(-width / 2.0f, height / 2.0f);
            vertices[2 * numHoleVertices + 2] = new Vector3(-width / 2.0f, -height / 2.0f);
            vertices[2 * numHoleVertices + 3] = new Vector3(-totalWidth / 2.0f, -height / 2.0f);
            vertices[2 * numHoleVertices + 4] = new Vector3(totalWidth / 2.0f, height / 2.0f);
            vertices[2 * numHoleVertices + 5] = new Vector3(width / 2.0f, height / 2.0f);
            vertices[2 * numHoleVertices + 6] = new Vector3(width / 2.0f, -height / 2.0f);
            vertices[2 * numHoleVertices + 7] = new Vector3(totalWidth / 2.0f, -height / 2.0f);

            uv[2 * numHoleVertices]     = new Vector2(0, 1);
            uv[2 * numHoleVertices + 1] = new Vector2(0.5f - width / 2.0f / totalWidth, 1);
            uv[2 * numHoleVertices + 2] = new Vector2(0.5f - width / 2.0f / totalWidth, 0);
            uv[2 * numHoleVertices + 3] = new Vector2(0, 0);
            uv[2 * numHoleVertices + 4] = new Vector2(1, 1);
            uv[2 * numHoleVertices + 5] = new Vector2(0.5f + width / 2.0f / totalWidth, 1);
            uv[2 * numHoleVertices + 6] = new Vector2(0.5f + width / 2.0f / totalWidth, 0);
            uv[2 * numHoleVertices + 7] = new Vector2(1, 0);

            triangles[0][3 * 4 * numVertices]     = 2 * numHoleVertices;
            triangles[0][3 * 4 * numVertices + 1] = 2 * numHoleVertices + 1;
            triangles[0][3 * 4 * numVertices + 2] = 2 * numHoleVertices + 2;

            triangles[0][3 * 4 * numVertices + 3] = 2 * numHoleVertices + 2;
            triangles[0][3 * 4 * numVertices + 4] = 2 * numHoleVertices + 3;
            triangles[0][3 * 4 * numVertices + 5] = 2 * numHoleVertices;

            triangles[0][3 * 4 * numVertices + 6] = 2 * numHoleVertices + 4;
            triangles[0][3 * 4 * numVertices + 7] = 2 * numHoleVertices + 6;
            triangles[0][3 * 4 * numVertices + 8] = 2 * numHoleVertices + 5;

            triangles[0][3 * 4 * numVertices + 9]  = 2 * numHoleVertices + 6;
            triangles[0][3 * 4 * numVertices + 10] = 2 * numHoleVertices + 4;
            triangles[0][3 * 4 * numVertices + 11] = 2 * numHoleVertices + 7;

            mesh              = new Mesh();
            mesh.vertices     = vertices;
            mesh.subMeshCount = 2;
            mesh.SetTriangles(triangles[0], 0);
            mesh.SetTriangles(triangles[1], 1);
            mesh.uv = uv;
            mesh.RecalculateNormals();

            var normals = new Vector3[mesh.normals.Length];
            mesh.normals.CopyTo(normals, 0);
            for (var i = 0; i < numHoleVertices; i++)
            {
                normals[i] = new Vector3(0, 0, -1);
            }
            mesh.normals = normals;
        }

        mf      = GetComponent <MeshFilter>();
        mf.mesh = mesh;
        transform.GetComponent <MeshCollider>().sharedMesh = mesh;
    }