public WaterMaterialModule(Game2DWater waterObject)
        {
            _waterObject = waterObject;

            _refractionRenderTextureID = Shader.PropertyToID("_RefractionTexture");
            _refractionPartiallySubmergedObjectsRenderTextureID = Shader.PropertyToID("_RefractionTexturePartiallySubmergedObjects");
            _reflectionRenderTextureID = Shader.PropertyToID("_ReflectionTexture");
            _reflectionPartiallySubmergedObjectsRenderTextureID = Shader.PropertyToID("_ReflectionTexturePartiallySubmergedObjects");
            _waterMatrixID               = Shader.PropertyToID("_WaterMVP");
            _surfaceLevelID              = Shader.PropertyToID("_SurfaceLevel");
            _surfaceSubmergeLevelID      = Shader.PropertyToID("_SubmergeLevel");
            _waterReflectionLowerLimitID = Shader.PropertyToID("_ReflectionLowerLimit");
            _waterReflectionFakePerspectiveLowerLimitID = Shader.PropertyToID("_ReflectionFakePerspectiveLowerLimit");
            _waterReflectionFakePerspectiveUpperLimitID = Shader.PropertyToID("_ReflectionFakePerspectiveUpperLimit");
            _waterReflectionFakePerspectivePartiallySubmergedObjectsUpperLimitID = Shader.PropertyToID("_ReflectionFakePerspectivePartiallySubmergedObjectsUpperLimit");
            _waterSolidColorID         = Shader.PropertyToID("_WaterColor");
            _waterGradientStartColorID = Shader.PropertyToID("_WaterColorGradientStart");
            _waterGradientEndColorID   = Shader.PropertyToID("_WaterColorGradientEnd");
            _waterSurfaceColorID       = Shader.PropertyToID("_SurfaceColor");

#if GAME_2D_WATER_KIT_LWRP
            _defaultMaterialShaderName = "Game2DWaterKit/Lightweight Render Pipeline/Unlit/Water";
#elif GAME_2D_WATER_KIT_URP
            _defaultMaterialShaderName = "Game2DWaterKit/Universal Render Pipeline/Unlit/Water";
#else
            _defaultMaterialShaderName = "Game2DWaterKit/Built-in Render Pipeline/Unlit/Water";
#endif
        }
Exemplo n.º 2
0
        internal void PhysicsUpdate(float deltaTime)
        {
            if (!_isActive || _affectedWaterObjets == null || (!_updateWhenOffscreen && !_mainModule.IsVisible))
            {
                return;
            }

            _elapsedTime += deltaTime;

            if (_elapsedTime >= _currentInterval)
            {
                Vector2 halfSize = _mainModule.WaterfallSize * 0.5f;
                Vector2 left     = _mainModule.TransformPointLocalToWorld(new Vector2(-halfSize.x, -halfSize.y));
                Vector2 right    = _mainModule.TransformPointLocalToWorld(new Vector2(halfSize.x, -halfSize.y));

                for (int i = 0, imax = _affectedWaterObjets.Count; i < imax; i++)
                {
                    var affectedWaterObject = _affectedWaterObjets[i];

                    if (affectedWaterObject != null && affectedWaterObject.waterObject != null)
                    {
                        Game2DWater waterObject     = affectedWaterObject.waterObject;
                        float       disturbance     = Random.Range(affectedWaterObject.minimumDisturbance, affectedWaterObject.maximumDisturbance);
                        bool        smooth          = affectedWaterObject.smoothRipples;
                        float       smoothingFactor = affectedWaterObject.smoothingFactor;
                        float       spread          = affectedWaterObject.spread;

                        waterObject.WaterfallRipplesModule.CreateRipples(left, right, disturbance, spread, smooth, smoothingFactor);
                    }
                }

                _currentInterval = _randomizeTimeInterval ? Random.Range(_minimumTimeInterval, _maximumTimeInterval) : _timeInterval;
                _elapsedTime     = 0f;
            }
        }
Exemplo n.º 3
0
 public WaterAttachedComponentsModule(Game2DWater waterObject, float buoyancyEffectorSurfaceLevel, BuoyancyEffector2DSurfaceLevelLocation buoyancyEffectorSurfaceLevelLocation, BoxCollider2DTopEdgeLocation boxColliderTopEdgeLocation)
 {
     _waterObject = waterObject;
     _buoyancyEffectorSurfaceLevel         = buoyancyEffectorSurfaceLevel;
     _buoyancyEffectorSurfaceLevelLocation = buoyancyEffectorSurfaceLevelLocation;
     _boxColliderTopEdgeLocation           = boxColliderTopEdgeLocation;
 }
Exemplo n.º 4
0
        public WaterCollisionRipplesModule(Game2DWater waterObject, WaterCollisionRipplesModuleParameters parameters, Transform ripplesEffectsPoolsRootParent)
        {
            _waterObject = waterObject;

            _isOnWaterEnterRipplesActive          = parameters.ActivateOnWaterEnterRipples;
            _isOnWaterExitRipplesActive           = parameters.ActivateOnWaterExitRipples;
            _isOnWaterMoveRipplesActive           = parameters.ActivateOnWaterMoveRipples;
            _collisionIgnoreTriggers              = parameters.CollisionIgnoreTriggers;
            _minimumDisturbance                   = parameters.MinimumDisturbance;
            _maximumDisturbance                   = parameters.MaximumDisturbance;
            _velocityMultiplier                   = parameters.VelocityMultiplier;
            _onWaterMoveRipplesMaximumDisturbance = parameters.OnWaterMoveRipplesMaximumDisturbance;
            _onWaterMoveRipplesMinimumVelocityToCauseMaximumDisturbance = parameters.OnWaterMoveRipplesMinimumVelocityToCauseMaximumDisturbance;
            _onWaterMoveRipplesDisturbanceSmoothFactor = parameters.OnWaterMoveRipplesDisturbanceSmoothFactor;
            _collisionMask                   = parameters.CollisionMask;
            _collisionMinimumDepth           = parameters.CollisionMinimumDepth;
            _collisionMaximumDepth           = parameters.CollisionMaximumDepth;
            _collisionRaycastMaximumDistance = parameters.CollisionRaycastMaxDistance;
            _onWaterEnter = parameters.OnWaterEnter;
            _onWaterExit  = parameters.OnWaterExit;

            _onCollisionRipplesEffectsPoolsRoot = CreateRipplesEffectsPoolsRoot(ripplesEffectsPoolsRootParent);

            _onWaterEnterRipplesParticleEffect = new WaterRipplesParticleEffect(parameters.WaterEnterParticleEffectParameters, _onCollisionRipplesEffectsPoolsRoot);
            _onWaterExitRipplesParticleEffect  = new WaterRipplesParticleEffect(parameters.WaterExitParticleEffectParameters, _onCollisionRipplesEffectsPoolsRoot);
            _onWaterEnterRipplesSoundEffect    = new WaterRipplesSoundEffect(parameters.WaterEnterSoundEffectParameters, _onCollisionRipplesEffectsPoolsRoot);
            _onWaterExitRipplesSoundEffect     = new WaterRipplesSoundEffect(parameters.WaterExitSoundEffectParameters, _onCollisionRipplesEffectsPoolsRoot);
        }
Exemplo n.º 5
0
        public WaterConstantRipplesModule(Game2DWater waterObject, WaterConstantRipplesModuleParameters parameters, Transform ripplesEffectsRoot)
        {
            _waterObject = waterObject;

            _isActive                             = parameters.IsActive;
            _updateWhenOffscreen                  = parameters.UpdateWhenOffscreen;
            _randomizeDisturbance                 = parameters.RandomizeDisturbance;
            _smoothRipples                        = parameters.SmoothDisturbance;
            _smoothingFactor                      = parameters.SmoothFactor;
            _disturbance                          = parameters.Disturbance;
            _minimumDisturbance                   = parameters.MinimumDisturbance;
            _maximumDisturbance                   = parameters.MaximumDisturbance;
            _randomizeTimeInterval                = parameters.RandomizeInterval;
            _timeInterval                         = parameters.Interval;
            _minimumTimeInterval                  = parameters.MinimumInterval;
            _maximumTimeInterval                  = parameters.MaximumInterval;
            _randomizeRipplesSourcePositions      = parameters.RandomizeRipplesSourcesPositions;
            _randomRipplesSourceCount             = parameters.RandomizeRipplesSourcesCount;
            _allowDuplicateRipplesSourcePositions = parameters.AllowDuplicateRipplesSourcesPositions;
            _sourcePositions                      = parameters.SourcePositions;

            _ripplesEffectsRoot = CreateRipplesEffectsRoot(ripplesEffectsRoot);

            _particleEffect = new WaterRipplesParticleEffect(parameters.ParticleEffectParameters, _ripplesEffectsRoot);
            _soundEffect    = new WaterRipplesSoundEffect(parameters.SoundEffectParameters, _ripplesEffectsRoot);
        }
        public WaterScriptGeneratedRipplesModule(Game2DWater waterObject, WaterScriptGeneratedRipplesModuleParameters parameters, Transform ripplesEffectsRootParent)
        {
            _waterObject = waterObject;

            _minimumDisturbance = parameters.MinimumDisturbance;
            _maximumDisturbance = parameters.MaximumDisturbance;

            _ripplesEffectsRoot = CreateRipplesEffectsRoot(ripplesEffectsRootParent);

            _particleEffect = new WaterRipplesParticleEffect(parameters.ParticleEffectParameters, _ripplesEffectsRoot);
            _soundEffect    = new WaterRipplesSoundEffect(parameters.SoundEffectParameters, _ripplesEffectsRoot);
        }
        public WaterRenderingModule(Game2DWater waterObject, WaterRenderingModuleParameters parameters)
            : base(parameters.RenderPixelLights, parameters.FarClipPlane, parameters.AllowMSAA, parameters.AllowHDR, parameters.SortingLayerID, parameters.SortingOrder)
        {
            _waterObject = waterObject;

            ReflectionZOffset = parameters.ReflectionZOffset;

            Refraction = new WaterRenderingMode(parameters.RefractionParameters, isReflectionMode: false);
            RefractionPartiallySubmergedObjects = new WaterRenderingMode(parameters.RefractionPartiallySubmergedObjectsParameters, isReflectionMode: false);
            Reflection = new WaterRenderingMode(parameters.ReflectionParameters, isReflectionMode: true);
            ReflectionPartiallySubmergedObjects = new WaterRenderingMode(parameters.ReflectionPartiallySubmergedObjectsParameters, isReflectionMode: true);
        }
Exemplo n.º 8
0
        public WaterSimulationModule(Game2DWater waterObject, WaterSimulationModuleParameters parameters)
        {
            _waterObject = waterObject;

            _damping                 = parameters.Damping;
            _stiffness               = parameters.Stiffness;
            _spread                  = parameters.Spread;
            _firstCustomBoundary     = parameters.FirstCustomBoundary;
            _secondCustomBoundary    = parameters.SecondCustomBoundary;
            _isUsingCustomBoundaries = parameters.IsUsingCustomBoundaries;

            _stiffnessSquareRoot = Mathf.Sqrt(_stiffness);
            _leftCustomBoundary  = Mathf.Min(_firstCustomBoundary, _secondCustomBoundary);
            _rightCustomBoundary = Mathf.Max(_firstCustomBoundary, _secondCustomBoundary);
        }
        public WaterSimulationModule(Game2DWater waterObject, WaterSimulationModuleParameters parameters)
        {
            _waterObject = waterObject;

            _damping                         = parameters.Damping;
            _stiffness                       = parameters.Stiffness;
            _spread                          = parameters.Spread;
            _firstCustomBoundary             = parameters.FirstCustomBoundary;
            _secondCustomBoundary            = parameters.SecondCustomBoundary;
            _isUsingCustomBoundaries         = parameters.IsUsingCustomBoundaries;
            _maximumdDynamicWavesDisturbance = parameters.MaximumDynamicWavesDisturbance;
            _limitDynamicWavesDisturbance    = parameters.LimitDynamicWavesDisturbance;
            _areSineWavesActive              = parameters.AreSineWavesActive;
            _sineWavesParameters             = parameters.SineWavesParameters;
            _canWavesAffectRigidbodies       = parameters.CanWavesAffectRigidbodies;
            _wavesStrengthOnRigidbodies      = parameters.WavesStrengthOnRigidbodies;

            _stiffnessSquareRoot = Mathf.Sqrt(_stiffness);
            _leftCustomBoundary  = Mathf.Min(_firstCustomBoundary, _secondCustomBoundary);
            _rightCustomBoundary = Mathf.Max(_firstCustomBoundary, _secondCustomBoundary);
        }
 public WaterAnimationModule(Game2DWater waterObject)
 {
     _waterObject = waterObject;
 }
Exemplo n.º 11
0
 public WaterMainModule(Game2DWater waterObject, Vector2 waterSize)
 {
     _waterObject = waterObject;
     _transform   = waterObject.transform;
     _waterSize   = waterSize;
 }
 public WaterWaterfallRipplesModule(Game2DWater waterObject)
 {
     _waterObject = waterObject;
 }
Exemplo n.º 13
0
 public WaterMeshModule(Game2DWater waterObject, int subdivisionsPerUnit)
 {
     _waterObject         = waterObject;
     _subdivisionsPerUnit = subdivisionsPerUnit;
 }
 public WaterAttachedComponentsModule(Game2DWater waterObject, float buoyancyEffectorSurfaceLevel)
 {
     _waterObject = waterObject;
     _buoyancyEffectorSurfaceLevel = buoyancyEffectorSurfaceLevel;
 }