상속: ForgeEditorDisplayButton
	void OnEnable()
	{
		//lerpFoldout = new AnimBool(true);
		//authoritativeFoldout = new AnimBool(true);
		networkingFoldout = new AnimBool(true);
		easyControls = new AnimBool(true);
		easyControls.target = true;

		_editorStyle = new GUIStyle();
		_editorStyle.normal.textColor = Color.white;
		_editorStyle.fontStyle = FontStyle.Bold;
		_editorStyle.alignment = TextAnchor.UpperCenter;

		Texture2D btnUp = Resources.Load<Texture2D>("HoverIdle");

		// TODO:  Implement
		//Texture2D btnDwn = Resources.Load<Texture2D>("HoverOver");
		//Texture2D btnIcon = Resources.Load<Texture2D>("ForgeAnvil");

		_editorButtons = new List<ForgeEditorDisplayButton>();

		ForgeButtonStyle buttonStyle = new ForgeButtonStyle("Server Is Authority", btnUp, btnUp, null, 75);
		//ForgeSubmitButtonStyle submitButtonStyle = new ForgeSubmitButtonStyle(() =>
		//{
		//	Debug.Log("Submit success");
		//}, "Toggle");

		ServerAuthorityButton serverAuthorityButton = new ServerAuthorityButton(buttonStyle);
		serverAuthorityButton.Initialize(Target.serverIsAuthority, Target.clientSidePrediction, string.Empty,
		(authorityValue)=>
		{
			Target.serverIsAuthority = authorityValue;
		},
		(clientSidePredictionValue)=>
		{
			Target.clientSidePrediction = clientSidePredictionValue;
		});

		_editorButtons.Add(serverAuthorityButton);

		buttonStyle = new ForgeButtonStyle("Networking Throttle", btnUp, btnUp, null, 100);

		NetworkThrottleButton networkingThrottleButton = new NetworkThrottleButton(buttonStyle);
		networkingThrottleButton.Initialize(Target.networkTimeDelay, "This controls how long (in seconds) to wait before updating across the network (priority can be emulated here), this includes [NetSync] vars.",
		(throttle)=>
		{
			Target.networkTimeDelay = throttle;
		});

		_editorButtons.Add(networkingThrottleButton);

		buttonStyle = new ForgeButtonStyle("Interpolation", btnUp, btnUp, null, 175);

		InterpolationButton interpolationButton = new InterpolationButton(buttonStyle);
		interpolationButton.Initialize(Target.interpolateFloatingValues, Target.lerpT, Target.lerpStopOffset, Target.lerpAngleStopOffset, "",
		(interpolation)=>
		{
			Target.interpolateFloatingValues = interpolation;
		},
		(lerpSpeed)=>
		{
			Target.lerpT = lerpSpeed;
		},
		(distanceStop)=>
		{
			Target.lerpStopOffset = distanceStop;
		},
		(angleStop)=>
		{
			Target.lerpAngleStopOffset = angleStop;
		});

		_editorButtons.Add(interpolationButton);

		buttonStyle = new ForgeButtonStyle("Easy Controls", btnUp, btnUp, null, 150);

		EasyControlsButton easyControlsButton = new EasyControlsButton(buttonStyle);
		easyControlsButton.Initialize(Target.lerpPosition,
			Target.serializePosition,
			Target.lerpRotation, 
			Target.serializeRotation,
			Target.lerpScale,
			Target.serializeScale,
		(lerpPositionChanged) =>
		{
			Target.lerpPosition = lerpPositionChanged;
		},
		(serializePositionChanged) =>
		{
			Target.serializePosition = serializePositionChanged;
		},
		(lerpRotationChanged) =>
		{
			Target.lerpRotation = lerpRotationChanged;
		},
		(serializeRotationChanged) =>
		{
			Target.serializeRotation = serializeRotationChanged;
		},
		(lerpScaleChanged) =>
		{
			Target.lerpScale = lerpScaleChanged;
		},
		(serializeScaleChanged) =>
		{
			Target.serializeScale = serializeScaleChanged;
		});

		_editorButtons.Add(easyControlsButton);

		buttonStyle = new ForgeButtonStyle("Miscellanous", btnUp, btnUp, null, 200);

		MiscellaneousButton miscButton = new MiscellaneousButton(buttonStyle);
		miscButton.Initialize("For things that constantly update like position and rotation you would normally not turn on reliable.",
			Target.isReliable,
			Target.isPlayer,
			Target.destroyOnDisconnect,
			Target.teleportToInitialPositions,
		(udpReliable)=>
		{
			Target.isReliable = udpReliable;
		},
		(isPlayer)=>
		{
			Target.isPlayer = isPlayer;
		},
		(destroyOnDisconnect)=>
		{
			Target.destroyOnDisconnect = destroyOnDisconnect;
		},
		(teleportToInitialPosition)=>
		{
			Target.teleportToInitialPositions = teleportToInitialPosition;
		});

		_editorButtons.Add(miscButton);

		//lerpFoldout.valueChanged.AddListener(Repaint);
		//networkingFoldout.valueChanged.AddListener(Repaint);
		//easyControls.valueChanged.AddListener(Repaint);
	}