Added an Earring for townsfolk. It was build with Probuilder, exported to obj for some finishing touches with Blender, then saved as obj again. The material is a simple color.
The earring possibly needs to be placed somewhere else once the townfolk is rigged. Which begs the question whether they can move their ears...
* Alternative water shader proposition
* Unlit water shader and add shadow
- Unlit water shader
- Add shadow as done in Toon shader
- Add vertex displacement like done in dickmendra shader
- Change the showcase water plane to intersect with the rock close to it to see foam
* Shader clean up
* Water shader improvements
- Water effect distance cut off
- Expose light probe contribution
- Control surface shadow intensity
* Small tweaks to showcase scene
* Water shader fixes
* Showcase water
* Small tweaks
Co-authored-by: Ciro Continisio <ciro@unity3d.com>
* Toon Shader Wind effect addon
New Sub Graph added to simulate wind based on gradient noise (over world coordinates) and applied on Object coordinates depending of the mesh vertex color (Green channel) only.
- Properties: Wind speed, Wind density, Wind strength, Wind direction (around Y axis)
Note: No update on FBX files in this PR to introduce vertex color on the existing assets. It will be done through one/multiple other PRs.
* Toon refactor
Reading back the requirement from Toon Shader add-on, it is preferred (for perf reason) to have a separated unlit shader for Toon shading with wind impact, instead of having wind graph applied to all object even if they are not sensitve to the wind.
Toon shader refactor:
- Extract each part into a separated Sub Shader
-- Shadow part: ToonShadow
-- Specular part: ToonSpecular
- Move current Toon implementation into Sub Graph: ToonColor
- Use ToonColor into Unlit shader Toon...
- Logic is now split into sub components: Genera, Graphics, Audio and Input (currently empty as input system is wip)
- The settings system class can be used to get information from all sub components, a distributor
- Fixed an issue with Screen resolution not being correct when in windowed mode (Screen.currentResolution gives back desktop resolution when in windowed mode)
- Added Input UI elements which are placeholders for now, once the input system is done this can be populated like the other settings sub components
- Implemented General tab - Language setting
- Implemented Graphics tab - Graphics Presets, Resolution (all supported resolutions on users device), fullscreen mode settings
- Implemented Advanced Graphics - Anisotropic filtering, Anti-Aliasing, Shadow Distance, Shadow Quality settings
- Implemented Audio tab - Music Volume, Sfx Volume settings
- Moved SettingsSystem scripts to Scripts/Systems/Settings (if we use asmdef files in the future this hiararchy might be better than throwin every script under the scripts folder)
- Added scriptable object which holds graphics presets
- Updated SettingsSystem script to utilize the presets object
Conflicts are all regarding the renaming of the namespace from Deivsky to UOP1
# Conflicts:
# UOP1_Project/Assets/Scripts/StateMachine/Core/IStateComponent.cs
# UOP1_Project/Assets/Scripts/StateMachine/Core/State.cs
# UOP1_Project/Assets/Scripts/StateMachine/Core/StateAction.cs
# UOP1_Project/Assets/Scripts/StateMachine/Core/StateCondition.cs
# UOP1_Project/Assets/Scripts/StateMachine/Core/StateMachine.cs
# UOP1_Project/Assets/Scripts/StateMachine/Core/StateTransition.cs
# UOP1_Project/Assets/Scripts/StateMachine/ScriptableObjects/StateActionSO.cs
# UOP1_Project/Assets/Scripts/StateMachine/ScriptableObjects/StateConditionSO.cs
# UOP1_Project/Assets/Scripts/StateMachine/ScriptableObjects/StateSO.cs
# UOP1_Project/Assets/Scripts/StateMachine/ScriptableObjects/StateTransitionSO.cs
Removed the 'override' feature that was implemented as it was adding unnecessary complexity.
Adjusted test scene to reflect the changes:
- Added `ChaseComponent.cs`. It takes `Transform _target`, `float _speed` and has a `public void Chase()` function that moves the gameObject towards the target.
- `ChaseAction` now simply calls `ChaseComponent.Chase()` in its `OnUpdate()`.
- `ChaseComponent` also contains a public getter `Target => _target`.
- `CloseToTargetCondition` gets `transform` from the `StateMachine` and the transform of the target from `ChaseComponent`, the `Statement()` remains the same. Another way to implement it would be to have a public getter `bool IsCloseToTarget` or `float DistanceToTarget` in `ChaseComponent` and evaluate that in the `Statement`.
- Removed `ChaseData.cs`.
- How much each sphear eats is now contro...
The test scene was adjusted to display how to override the behaviour of the Spheres by attatching a different `ChaseDataSO` to the `StateMachine`, specifying a different target.
Tooltips and comments were added to try to explain the workflow of overriding Action and Condition data.