Skip to content

Commit

Permalink
Scriptable Data & Events
Browse files Browse the repository at this point in the history
  • Loading branch information
maxartz15 committed Dec 22, 2021
1 parent be3af5c commit 10d751c
Show file tree
Hide file tree
Showing 57 changed files with 746 additions and 146 deletions.
5 changes: 2 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Change Log:

## 0.1.0
## 1.0.0

- Start Project:
- ...
- Base project.
7 changes: 7 additions & 0 deletions CHANGELOG.md.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 0 additions & 16 deletions Editor/COMPANYNAME.PACKAGENAME.Editor.asmdef

This file was deleted.

6 changes: 0 additions & 6 deletions Editor/EditorExample.cs

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2021 COMPANYNAME
Copyright (c) 2021 Max Kruf

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
7 changes: 7 additions & 0 deletions LICENSE.md.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 36 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,43 @@
# [COMPANYNAME]() - PACKAGENAME

Description.
# ScriptableData
## Data
ScriptableData stores runtime data to be accessed by scripts that reference the ScriptableObject. It has a OnValueChangedEvent to subscribe when data changes.
With this workflow you can remove dependencies and increase flexibility.
### Extendable Data:
```C#
public class ScriptableData<T0> : ScriptableObject {}
public class ScriptableData<T0, T1> : ScriptableObject {}
public class ScriptableData<T0, T1, T2> : ScriptableObject {}
public class ScriptableData<T0, T1, T2, T3> : ScriptableObject {}
```
### Example:
```C#
[CreateAssetMenu(menuName = "ScriptableData/Data/Vector3", order = 147)]
public class SDVector3 : ScriptableData<Vector3> {}
```
## Events
ScriptableEvent does not contain any runtime data but can be used to send events (with data) around.
### Base Event
```C#
[CreateAssetMenu(menuName = "ScriptableData/Event/Event", order = 147)]
public class ScriptableEvent : ScriptableObject {}
```
### Extendable Events:
```C#
public class ScriptableEvent<T0> : ScriptableObject {}
public class ScriptableEvent<T0, T1> : ScriptableObject {}
public class ScriptableEvent<T0, T1, T2> : ScriptableObject {}
public class ScriptableEvent<T0, T1, T2, T3> : ScriptableObject {}
```
### Example:
```C#
[CreateAssetMenu(menuName = "ScriptableData/Event/Vector3", order = 147)]
public class SEVector3 : ScriptableEvent<Vector3> {}
```

## Install

[Installing from a Git URL](https://docs.unity3d.com/Manual/upm-ui-giturl.html)

[Unitypackage](https://github.com/COMPANYNAME/PACKAGENAME/releases)

[Unitypackage](https://github.com/maxartz15/ScriptableData/releases)

## LICENSE

Overall package is licensed under [MIT](/LICENSE.md), unless otherwise noted in the [3rd party licenses](/THIRD%20PARTY%20NOTICES.md) file and/or source code.
7 changes: 7 additions & 0 deletions README.md.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions Runtime.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions Runtime/RuntimeExample.cs

This file was deleted.

255 changes: 255 additions & 0 deletions Runtime/ScriptableData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,255 @@
using System;
using UnityEngine;

namespace ScriptableData
{
public class ScriptableData<T0> : ScriptableObject
{
public event Action<T0> OnValueChangedEvent;

private T0 _value;
public T0 Value
{
get
{
return _value;
}
set
{
_value = value;
OnValueChangedEvent?.Invoke(_value);
}
}

public void SetWithoutNotify(T0 value)
{
_value = value;
}

public void Invoke(T0 value)
{
_value = value;
OnValueChangedEvent?.Invoke(value);
}
}

public class ScriptableData<T0, T1> : ScriptableObject
{
public event Action<T0, T1> OnValueChangedEvent;

private T0 _value;
public T0 Value
{
get
{
return _value;
}
set
{
_value = value;
OnValueChangedEvent?.Invoke(_value, _value1);
}
}

private T1 _value1;
public T1 Value1
{
get
{
return _value1;
}
set
{
_value1 = value;
OnValueChangedEvent?.Invoke(_value, _value1);
}
}

public void SetWithoutNotify(T0 value)
{
_value = value;
}

public void SetWithoutNotify(T0 value, T1 value1)
{
_value = value;
_value1 = value1;
}

public void Invoke(T0 value, T1 value1)
{
Value = value;
Value1 = value1;
OnValueChangedEvent?.Invoke(value, value1);
}
}

public class ScriptableData<T0, T1, T2> : ScriptableObject
{
public event Action<T0, T1, T2> OnValueChangedEvent;

private T0 _value;
public T0 Value
{
get
{
return _value;
}
set
{
_value = value;
OnValueChangedEvent?.Invoke(_value, _value1, _value2);
}
}

private T1 _value1;
public T1 Value1
{
get
{
return _value1;
}
set
{
_value1 = value;
OnValueChangedEvent?.Invoke(_value, _value1, _value2);
}
}

private T2 _value2;
public T2 Value2
{
get
{
return _value2;
}
set
{
_value2 = value;
OnValueChangedEvent?.Invoke(_value, _value1, _value2);
}
}

public void SetWithoutNotify(T0 value)
{
_value = value;
}

public void SetWithoutNotify(T0 value, T1 value1)
{
_value = value;
_value1 = value1;
}

public void SetWithoutNotify(T0 value, T1 value1, T2 value2)
{
_value = value;
_value1 = value1;
_value2 = value2;
}

public void Invoke(T0 value, T1 value1, T2 value2)
{
Value = value;
Value1 = value1;
Value2 = value2;
OnValueChangedEvent?.Invoke(value, value1, value2);
}
}

public class ScriptableData<T0, T1, T2, T3> : ScriptableObject
{
public event Action<T0, T1, T2, T3> OnValueChangedEvent;

private T0 _value;
public T0 Value
{
get
{
return _value;
}
set
{
_value = value;
OnValueChangedEvent?.Invoke(_value, _value1, _value2, _value3);
}
}

private T1 _value1;
public T1 Value1
{
get
{
return _value1;
}
set
{
_value1 = value;
OnValueChangedEvent?.Invoke(_value, _value1, _value2, _value3);
}
}

private T2 _value2;
public T2 Value2
{
get
{
return _value2;
}
set
{
_value2 = value;
OnValueChangedEvent?.Invoke(_value, _value1, _value2, _value3);
}
}

private T3 _value3;
public T3 Value3
{
get
{
return _value3;
}
set
{
_value3 = value;
OnValueChangedEvent?.Invoke(_value, _value1, _value2, _value3);
}
}

public void SetWithoutNotify(T0 value)
{
_value = value;
}

public void SetWithoutNotify(T0 value, T1 value1)
{
_value = value;
_value1 = value1;
}

public void SetWithoutNotify(T0 value, T1 value1, T2 value2)
{
_value = value;
_value1 = value1;
_value2 = value2;
}

public void SetWithoutNotify(T0 value, T1 value1, T2 value2, T3 value3)
{
_value = value;
_value1 = value1;
_value2 = value2;
_value3 = value3;
}

public void Invoke(T0 value, T1 value1, T2 value2, T3 value3)
{
Value = value;
Value1 = value1;
Value2 = value2;
Value3 = value3;
OnValueChangedEvent?.Invoke(value, value1, value2, value3);
}
}
}
Loading

0 comments on commit 10d751c

Please sign in to comment.