Ejemplo n.º 1
0
        void Update()
        {
            for (var i = 0; i < samplePoints.Length; i++)
            {
                samplePoints[i] = transform.TransformPoint(voxels[i]);
            }

            if (_buoyancyType == BuoyancyType.PhysicalVoxel || _buoyancyType == BuoyancyType.Physical) // if acurate the are more points so only heights are needed
            {
                GerstnerWavesJobs.UpdateSamplePoints(samplePoints, _guid, false);
                GerstnerWavesJobs.GetData(_guid, ref heights);
            }
            else
            {
                GerstnerWavesJobs.UpdateSamplePoints(samplePoints, _guid, true);
                GerstnerWavesJobs.GetSimpleData(_guid, ref heights, ref normals);

                if (_buoyancyType == BuoyancyType.NonPhysical)
                {
                    Vector3 vec = transform.position;
                    vec.y = heights[0].y;
                    transform.position = vec;
                    transform.up       = Vector3.Slerp(transform.up, normals[0], Time.deltaTime);
                }
                else if (_buoyancyType == BuoyancyType.NonPhysicalVoxel)
                {
                    // do the voxel non-physical
                }
            }
        }
Ejemplo n.º 2
0
        private void Update()
        {
            switch (_buoyancyType)
            {
            case BuoyancyType.NonPhysical:
            {
                var t   = transform;
                var vec = t.position;
                vec.y      = Heights[0].y + waterLevelOffset;
                t.position = vec;
                t.up       = Vector3.Slerp(t.up, _normals[0], Time.deltaTime);
                break;
            }

            case BuoyancyType.NonPhysicalVoxel:
                // do the voxel non-physical
                break;

            case BuoyancyType.Physical:
                LocalToWorldJob.CompleteJob(_guid);
                GetVelocityPoints();
                break;

            case BuoyancyType.PhysicalVoxel:
                LocalToWorldJob.CompleteJob(_guid);
                GetVelocityPoints();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            GerstnerWavesJobs.UpdateSamplePoints(ref _samplePoints, _guid);
            GerstnerWavesJobs.GetData(_guid, ref Heights, ref _normals);
        }