示例#1
0
        private static void FollowSpline()
        {
            PFollowSplineConfig config = PFollowSplineConfig.Instance;

            if (config.Spline == null || config.Water == null)
            {
                return;
            }
            GSplineCreator spline = config.Spline;
            PWater         water  = config.Water;

            List <GSplineAnchor> anchors = spline.Spline.Anchors;
            Vector3 sumPosition          = Vector3.zero;

            for (int i = 0; i < anchors.Count; ++i)
            {
                sumPosition += anchors[i].Position;
            }
            Vector3 avgPos = sumPosition / anchors.Count;

            water.transform.position = new Vector3(avgPos.x, config.WaterLevel, avgPos.z);

            List <PIndex2D> indices = new List <PIndex2D>();
            List <Vector4>  verts   = spline.GenerateVerticesWithFalloff();

            for (int i = 0; i < verts.Count; ++i)
            {
                PIndex2D index = water.WorldPointToTileIndex(verts[i]);
                indices.AddIfNotContains(index);
            }

            water.TileIndices = indices;
            water.ReCalculateBounds();
        }
示例#2
0
        public static void OnGUI()
        {
            PFollowSplineConfig config = PFollowSplineConfig.Instance;

            config.Spline     = EditorGUILayout.ObjectField("Spline", config.Spline, typeof(GSplineCreator), true) as GSplineCreator;
            config.Water      = EditorGUILayout.ObjectField("Water", config.Water, typeof(PWater), true) as PWater;
            config.WaterLevel = EditorGUILayout.FloatField("Water Level", config.WaterLevel);
            EditorUtility.SetDirty(config);

            GUI.enabled = config.Spline != null && config.Water != null;
            if (GUILayout.Button("Follow Spline"))
            {
                GAnalytics.Record(GX_POSEIDON_FOLLOW_SPLINE);
                FollowSpline();
            }
            GUI.enabled = true;
        }