fix:work around on scene object serialization

main
taoria 3 years ago
parent 5c851d5cca
commit 730d46537a
  1. 96
      Scenes/SampleScene.unity
  2. 1
      TNode/Attribute/GraphUsageAttribute.cs
  3. 9
      TNode/DataWrapper.cs
  4. 0
      TNode/DataWrapper.cs.meta
  5. 7
      TNode/Models/BlackboardData.cs
  6. 3
      TNode/Models/GraphData.cs
  7. 31
      TNode/Models/SceneObjectWrapper.cs
  8. 3
      TNode/Models/SceneObjectWrapper.cs.meta
  9. 1
      TNodeGraphViewImpl/Editor/GraphBlackboard/DefaultGraphBlackboardView.cs

@ -199,7 +199,7 @@ Canvas:
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
@ -625,6 +625,90 @@ Transform:
m_Father: {fileID: 507038910}
m_RootOrder: -1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1648230696
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1648230698}
- component: {fileID: 1648230697}
m_Layer: 0
m_Name: Square
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!212 &1648230697
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1648230696}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &1648230698
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1648230696}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1701140682
GameObject:
m_ObjectHideFlags: 0
@ -752,14 +836,14 @@ MonoBehaviour:
m_Calls: []
m_text: Button
m_isRightToLeft: 0
m_fontAsset: {fileID: 0}
m_sharedMaterial: {fileID: 0}
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
@ -772,7 +856,7 @@ MonoBehaviour:
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: 0
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
@ -803,7 +887,7 @@ MonoBehaviour:
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 0
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0

@ -13,6 +13,7 @@ namespace TNode.Attribute{
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
[BaseTypeRequired(typeof(IModel))]
[UsedImplicitly]
public class GraphUsageAttribute:System.Attribute{
public readonly Type GraphDataType;
public string Category;

@ -5,10 +5,10 @@ using UnityEngine;
namespace TNode.Editor.Serialization{
[Serializable]
public class DataWrapper<TWrapper,TData>:ScriptableObject where TWrapper:DataWrapper<TWrapper,TData> where TData:IModel,new(){
public class DataWrapper<TWrapper,TData>:ScriptableObject where TWrapper:DataWrapper<TWrapper,TData>,new(){
[SerializeReference]
public TData data;
private static readonly Dictionary<TData,TWrapper> Cache = new ();
protected static readonly Dictionary<TData,TWrapper> Cache = new ();
public static TWrapper Get(TData data){
if (data.GetType().IsGenericType){
return CreateInstance<TWrapper>();
@ -33,10 +33,13 @@ namespace TNode.Editor.Serialization{
var fieldInfo = data.GetType().GetField(path);
return fieldInfo.GetValue(data);
}
public virtual TData GetData(){
return data;
}
public static implicit operator TData(DataWrapper<TWrapper,TData> wrapper){
if (wrapper == null)
return default(TData);
return wrapper.data;
return wrapper.GetData();
}
/// <summary>

@ -1,8 +1,13 @@
using System;
using System.Collections.Generic;
using Object = UnityEngine.Object;
namespace TNode.Models{
/// <summary>
/// Black board data can store scene data
/// </summary>
[Serializable]
public class BlackboardData:IModel{
}
}

@ -17,6 +17,9 @@ namespace TNode.Models{
[SerializeReference]
public BlackboardData blackboardData;
[HideInInspector]
public string sceneReference;
public List<NodeLink> NodeLinks{
get{
return nodeLinks ??= new List<NodeLink>();

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Linq;
using TNode.Editor.Serialization;
using UnityEngine;
namespace TNode.Models{
/// <summary>
/// Scene Object wrapper use to serialize blackboard data
/// </summary>
public class SceneObjectWrapper:DataWrapper<SceneObjectWrapper,BlackboardData>{
public bool loadedFromScene =false;
public List<string> sceneObjects = new List<string>();
public void LoadFromScene(){
}
public override BlackboardData GetData(){
if (data == null) return null;
if (!Cache.ContainsKey(this)){
Cache.Add(data,this);
}
if (loadedFromScene==false){
loadedFromScene = true;
}
return data;
}
}
}

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9603719ce2e546968394c0f2a0c83ef3
timeCreated: 1657774760

@ -20,6 +20,7 @@ namespace TNodeGraphViewImpl.Editor.GraphBlackboard{
}
protected override void UpdateBlackboard(BlackboardData data){
if (data == null) return;
var serializedObject = new SerializedObject((BlackboardDataWrapper)data);
foreach (var field in data.GetType()
.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)){

Loading…
Cancel
Save