using UnityEditor ;
using UnityEngine ;
using System.Collections ;
namespace Fungus.Script
{
[CustomEditor (typeof(Character))]
public class CharacterEditor : Editor
{
Material spriteMaterial ;
void OnEnable ( )
{
Shader shader = Shader . Find ( "Sprites/Default" ) ;
if ( shader ! = null )
{
spriteMaterial = new Material ( shader ) ;
spriteMaterial . hideFlags = HideFlags . DontSave ;
}
}
void OnDisable ( )
{
DestroyImmediate ( spriteMaterial ) ;
}
public override void OnInspectorGUI ( )
{
Character t = target as Character ;
EditorGUI . BeginChangeCheck ( ) ;
string characterName = EditorGUILayout . TextField ( new GUIContent ( "Name Text" , "Name of the character display in the dialog" ) ,
t . characterName ) ;
Color characterColor = EditorGUILayout . ColorField ( new GUIContent ( "Text Color" , "Color of name text display in the dialog" ) ,
t . characterColor ) ;
Sprite characterImage = EditorGUILayout . ObjectField ( new GUIContent ( "Image" , "Character image sprite to display in the dialog" ) ,
t . characterImage ,
typeof ( Sprite ) ,
true ) as Sprite ;
SayDialog . DialogSide dialogSide = ( SayDialog . DialogSide ) EditorGUILayout . EnumPopup ( new GUIContent ( "Image Side" , "Which side to display the image in the dialog" ) ,
t . dialogSide ) ;
EditorGUILayout . Separator ( ) ;
if ( characterImage ! = null & &
spriteMaterial ! = null )
{
EditorGUILayout . BeginHorizontal ( ) ;
GUILayout . FlexibleSpace ( ) ;
float aspect = ( float ) characterImage . texture . width / ( float ) characterImage . texture . height ;
Rect imagePreviewRect = GUILayoutUtility . GetAspectRect ( aspect , GUILayout . Width ( 1 5 0 ) , GUILayout . ExpandWidth ( false ) ) ;
GUILayout . FlexibleSpace ( ) ;
EditorGUILayout . EndHorizontal ( ) ;
DrawPreview ( imagePreviewRect ,
characterImage . texture ) ;
}
if ( EditorGUI . EndChangeCheck ( ) )
{
Undo . RecordObject ( t , "Set Character" ) ;
t . characterName = characterName ;
t . characterColor = characterColor ;
t . characterImage = characterImage ;
t . dialogSide = dialogSide ;
}
}
public void DrawPreview ( Rect previewRect , Texture2D texture )
{
if ( texture = = null )
{
return ;
}
EditorGUI . DrawPreviewTexture ( previewRect ,
texture ,
spriteMaterial ) ;
}
}
}