Skip to content

Shared EditorState #92

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 97 additions & 15 deletions Path Creator Project/Assets/PathCreator/Core/Editor/PathEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,22 +42,95 @@ public class PathEditor : Editor {
ArcHandle anchorAngleHandle = new ArcHandle ();
VertexPath normalsVertexPath;

// State variables:
int selectedSegmentIndex;
int draggingHandleIndex;
int mouseOverHandleIndex;
int handleIndexToDisplayAsTransform;
// Shared editor state between OnSceneGUI and OnInspectorGUI as they work with different editor instances
private class EditorState
{
public int selectedSegmentIndex;
public int draggingHandleIndex;
public int mouseOverHandleIndex;
public int handleIndexToDisplayAsTransform;

public bool shiftLastFrame;
public bool hasUpdatedScreenSpaceLine;
public bool hasUpdatedNormalsVertexPath;
public bool editingNormalsOld;

public Vector3 transformPos;
public Vector3 transformScale;
public Quaternion transformRot;

public Color handlesStartCol;
}

static Dictionary<PathCreator, EditorState> editorStateMap = new Dictionary<PathCreator, EditorState>();

EditorState editorState;

// State variables accessors:
int selectedSegmentIndex
{
get { return editorState.selectedSegmentIndex; }
set { editorState.selectedSegmentIndex = value; }
}

bool shiftLastFrame;
bool hasUpdatedScreenSpaceLine;
bool hasUpdatedNormalsVertexPath;
bool editingNormalsOld;
int draggingHandleIndex
{
get { return editorState.draggingHandleIndex; }
set { editorState.draggingHandleIndex = value; }
}
int mouseOverHandleIndex
{
get { return editorState.mouseOverHandleIndex; }
set { editorState.mouseOverHandleIndex = value; }
}
int handleIndexToDisplayAsTransform
{
get { return editorState.handleIndexToDisplayAsTransform; }
set { editorState.handleIndexToDisplayAsTransform = value; }
}

bool shiftLastFrame
{
get { return editorState.shiftLastFrame; }
set { editorState.shiftLastFrame = value; }
}
bool hasUpdatedScreenSpaceLine
{
get { return editorState.hasUpdatedScreenSpaceLine; }
set { editorState.hasUpdatedScreenSpaceLine = value; }
}
bool hasUpdatedNormalsVertexPath
{
get { return editorState.hasUpdatedNormalsVertexPath; }
set { editorState.hasUpdatedNormalsVertexPath = value; }
}
bool editingNormalsOld
{
get { return editorState.editingNormalsOld; }
set { editorState.editingNormalsOld = value; }
}

Vector3 transformPos;
Vector3 transformScale;
Quaternion transformRot;
Vector3 transformPos
{
get { return editorState.transformPos; }
set { editorState.transformPos = value; }
}
Vector3 transformScale
{
get { return editorState.transformScale; }
set { editorState.transformScale = value; }
}
Quaternion transformRot
{
get { return editorState.transformRot; }
set { editorState.transformRot = value; }
}

Color handlesStartCol;
Color handlesStartCol
{
get { return editorState.handlesStartCol; }
set { editorState.handlesStartCol = value; }
}

// Constants
const int bezierPathTab = 0;
Expand Down Expand Up @@ -607,10 +680,19 @@ void DrawHandle (int i) {

void OnDisable () {
Tools.hidden = false;

if(editorStateMap.ContainsKey(creator))
editorStateMap.Remove(creator);
}

void OnEnable () {
creator = (PathCreator) target;
void OnEnable()
{
creator = (PathCreator)target;

// Ensure we have an EditorState object for this creator instance
if (editorStateMap.TryGetValue(creator, out editorState) == false)
editorState = editorStateMap[creator] = new EditorState();

bool in2DEditorMode = EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D;
creator.InitializeEditorData (in2DEditorMode);

Expand Down