推动Config新增
This commit is contained in:
@@ -1,21 +1,36 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using Convention;
|
||||
using Dreamteck.Splines;
|
||||
using Unity.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Demo.Game
|
||||
{
|
||||
public interface IDependOnSplineRenderer
|
||||
namespace ConfigType
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static class DependOnSplineRendererUtility
|
||||
{
|
||||
public static BasicSplineRenderer LoadSplineRendererTool(this IDependOnSplineCore self, string path)
|
||||
public class BasicSplineRendererConfig : UpdatementVec2Config
|
||||
{
|
||||
return self.SharedInterfaceScriptObject.FindWithPath(path, true) as BasicSplineRenderer;
|
||||
public int MySplineCore;
|
||||
public string LinesAssetBundlePath;
|
||||
public string MyDefaultMaterial;
|
||||
|
||||
public override void Deserialize(BinaryReader reader)
|
||||
{
|
||||
MySplineCore = BinarySerializeUtility.ReadInt(reader);
|
||||
LinesAssetBundlePath = BinarySerializeUtility.ReadString(reader);
|
||||
MyDefaultMaterial = BinarySerializeUtility.ReadString(reader);
|
||||
base.Deserialize(reader);
|
||||
}
|
||||
|
||||
public override void Serialize(BinaryWriter writer)
|
||||
{
|
||||
BinarySerializeUtility.WriteInt(writer, MySplineCore);
|
||||
BinarySerializeUtility.WriteString(writer, LinesAssetBundlePath);
|
||||
BinarySerializeUtility.WriteString(writer, MyDefaultMaterial);
|
||||
base.Serialize(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,19 +109,6 @@ namespace Demo.Game
|
||||
ManualAddEntry(time, new(from, to), curveType);
|
||||
}
|
||||
|
||||
[Convention.RScript.Variable.Attr.Method]
|
||||
public void LoadSpline(string path)
|
||||
{
|
||||
this.LoadSplineTool(path);
|
||||
}
|
||||
|
||||
|
||||
[Convention.RScript.Variable.Attr.Method]
|
||||
public void LoadSpline(SplineCore spline)
|
||||
{
|
||||
this.MySplineCore = spline;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载对应ab包并加载指定材质
|
||||
/// </summary>
|
||||
|
||||
@@ -3,10 +3,36 @@ using Demo.Game.Attr;
|
||||
using Dreamteck.Splines;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Demo.Game
|
||||
{
|
||||
namespace ConfigType
|
||||
{
|
||||
public class SplineTubeRendererConfig : BasicSplineJustFollowConfig
|
||||
{
|
||||
public const bool DefaultIsDoubleSide = true;
|
||||
public const int DefaultSidesCount = 12;
|
||||
public bool IsDoubleSide = DefaultIsDoubleSide;
|
||||
public int SidesCount = DefaultSidesCount;
|
||||
|
||||
public override void Deserialize(BinaryReader reader)
|
||||
{
|
||||
IsDoubleSide = BinarySerializeUtility.ReadBool(reader);
|
||||
SidesCount = BinarySerializeUtility.ReadInt(reader);
|
||||
base.Deserialize(reader);
|
||||
}
|
||||
|
||||
public override void Serialize(BinaryWriter writer)
|
||||
{
|
||||
BinarySerializeUtility.WriteBool(writer, IsDoubleSide);
|
||||
BinarySerializeUtility.WriteInt(writer, SidesCount);
|
||||
base.Serialize(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Scriptable]
|
||||
public class SplineTubeRenderer : BasicSplineRenderer<TubeGenerator>
|
||||
{
|
||||
|
||||
@@ -1,12 +1,42 @@
|
||||
using Convention;
|
||||
using Demo.Game.Attr;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Demo.Game
|
||||
{
|
||||
namespace ConfigType
|
||||
{
|
||||
public class SplineAnchorConfig : ScriptLoadableConfig
|
||||
{
|
||||
public int MySplineCore, MySplineRenderer;
|
||||
public bool isFollowPosition, isFollowRotation;
|
||||
public float MySplineOffset;
|
||||
public override void Deserialize(BinaryReader reader)
|
||||
{
|
||||
MySplineCore = BinarySerializeUtility.ReadInt(reader);
|
||||
MySplineRenderer = BinarySerializeUtility.ReadInt(reader);
|
||||
isFollowPosition = BinarySerializeUtility.ReadBool(reader);
|
||||
isFollowRotation = BinarySerializeUtility.ReadBool(reader);
|
||||
MySplineOffset = BinarySerializeUtility.ReadFloat(reader);
|
||||
base.Deserialize(reader);
|
||||
}
|
||||
|
||||
public override void Serialize(BinaryWriter writer)
|
||||
{
|
||||
BinarySerializeUtility.WriteInt(writer, MySplineCore);
|
||||
BinarySerializeUtility.WriteInt(writer, MySplineRenderer);
|
||||
BinarySerializeUtility.WriteBool(writer, isFollowPosition);
|
||||
BinarySerializeUtility.WriteBool(writer, isFollowRotation);
|
||||
BinarySerializeUtility.WriteFloat(writer, MySplineOffset);
|
||||
base.Serialize(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Scriptable]
|
||||
public class SplineAnchor : ScriptableObject, IDependOnSplineCore, IDependOnSplineRenderer
|
||||
public class SplineAnchor : ScriptableObject, IDependOnSplineCore
|
||||
{
|
||||
public static SplineAnchor Make()
|
||||
{
|
||||
@@ -24,16 +54,6 @@ namespace Demo.Game
|
||||
Updater?.Invoke();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载并绑定到新样条线
|
||||
/// </summary>
|
||||
/// <param name="path">对象路径, 不存在时则立刻加载</param>
|
||||
[Convention.RScript.Variable.Attr.Method]
|
||||
public void LoadSpline(string path)
|
||||
{
|
||||
this.LoadSplineTool(path);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 必须先执行LoadSpline加载样条线
|
||||
/// </summary>
|
||||
|
||||
@@ -51,29 +51,14 @@ namespace Demo.Game
|
||||
public interface IDependOnSplineCore : IScriptableObject
|
||||
{
|
||||
SplineCore MySplineCore { get; set; }
|
||||
void LoadSpline(string path);
|
||||
}
|
||||
|
||||
public static class DependOnSplineCoreUtility
|
||||
{
|
||||
public const string LoadSplineDescription = @"
|
||||
<summary>
|
||||
加载并绑定到新样条线
|
||||
</summary>
|
||||
<param name=""path"">对象相对路径,若对象不存在则作为脚本相对路径加载</param>
|
||||
";
|
||||
|
||||
/// <summary>
|
||||
/// 加载并绑定到新样条线
|
||||
/// </summary>
|
||||
/// <param name="path">对象相对路径,若对象不存在则作为脚本相对路径加载</param>
|
||||
public static SplineCore LoadSplineTool(this IDependOnSplineCore self, string path)
|
||||
/// <param name="path">对象路径, 不存在时则立刻加载</param>
|
||||
[Convention.RScript.Variable.Attr.Method]
|
||||
void LoadSpline(SplineCore core)
|
||||
{
|
||||
var spline = self.SharedInterfaceScriptObject.FindWithPath(path, false);
|
||||
if (spline == null)
|
||||
spline = self.SharedInterfaceScriptObject.LoadSubScript(nameof(SplineCore), new ToolFile(path).GetFilename(true), path);
|
||||
self.MySplineCore = (SplineCore)spline;
|
||||
return self.MySplineCore;
|
||||
MySplineCore = core;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,10 +2,42 @@ using Convention;
|
||||
using Demo.Game.Attr;
|
||||
using Dreamteck.Splines;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Demo.Game
|
||||
{
|
||||
namespace ConfigType
|
||||
{
|
||||
public class SplineNodeConfig : ScriptLoadableConfig
|
||||
{
|
||||
public float NodeSize = 1;
|
||||
public Color NodeColor = Color.white;
|
||||
public bool IsSetupNodeRotation = false;
|
||||
public Vector3 NodeRotation = Vector3.zero;
|
||||
public int[] LinkSplineCores;
|
||||
public override void Deserialize(BinaryReader reader)
|
||||
{
|
||||
NodeSize = BinarySerializeUtility.ReadFloat(reader);
|
||||
NodeColor = BinarySerializeUtility.ReadColor(reader);
|
||||
IsSetupNodeRotation = BinarySerializeUtility.ReadBool(reader);
|
||||
NodeRotation = BinarySerializeUtility.ReadVec3(reader);
|
||||
LinkSplineCores = BinarySerializeUtility.DeserializeIntArray(reader);
|
||||
base.Deserialize(reader);
|
||||
}
|
||||
|
||||
public override void Serialize(BinaryWriter writer)
|
||||
{
|
||||
BinarySerializeUtility.WriteFloat(writer, NodeSize);
|
||||
BinarySerializeUtility.WriteColor(writer, NodeColor);
|
||||
BinarySerializeUtility.WriteBool(writer, IsSetupNodeRotation);
|
||||
BinarySerializeUtility.WriteVec3(writer, NodeRotation);
|
||||
BinarySerializeUtility.SerializeArray(writer, LinkSplineCores);
|
||||
base.Serialize(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Scriptable]
|
||||
public class SplineNode : ScriptableObject
|
||||
{
|
||||
@@ -14,7 +46,7 @@ namespace Demo.Game
|
||||
public static SplineNode Make()
|
||||
{
|
||||
var node = new GameObject("", typeof(Node)).AddComponent<SplineNode>();
|
||||
node.m_MyNode = node.GetOrAddComponent<Node>();
|
||||
node.m_MyNode = node.GetOrAddComponent<Node>();
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -23,14 +55,13 @@ namespace Demo.Game
|
||||
public Color NodeColor = Color.white;
|
||||
public bool IsSetupNodeRotation = false;
|
||||
public Vector3 NodeRotation = Vector3.zero;
|
||||
public int MyNodeContent = 0;
|
||||
|
||||
|
||||
public Node MyNode => m_MyNode;
|
||||
|
||||
public void AddTo(SplineCore core)
|
||||
{
|
||||
MyNodeContent = core.NodeContent;
|
||||
int MyNodeContent = core.NodeContent;
|
||||
core.MySplineComputer.SetPointColor(MyNodeContent, NodeColor);
|
||||
core.MySplineComputer.SetPointSize(MyNodeContent, NodeSize);
|
||||
core.MySplineComputer.SetPointNormal(MyNodeContent, IsSetupNodeRotation ? NodeRotation.normalized : transform.up);
|
||||
|
||||
@@ -1,13 +1,33 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using Convention;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Demo.Game
|
||||
{
|
||||
public abstract class BasicSplineJustFollow : Updatement<float>
|
||||
namespace ConfigType
|
||||
{
|
||||
public SplineCore MySplineCore;
|
||||
public class BasicSplineJustFollowConfig : ScriptLoadableConfig
|
||||
{
|
||||
public int MySplineCore;
|
||||
public override void Deserialize(BinaryReader reader)
|
||||
{
|
||||
MySplineCore = BinarySerializeUtility.ReadInt(reader);
|
||||
base.Deserialize(reader);
|
||||
}
|
||||
|
||||
public override void Serialize(BinaryWriter writer)
|
||||
{
|
||||
BinarySerializeUtility.WriteInt(writer, MySplineCore);
|
||||
base.Serialize(writer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class BasicSplineJustFollow : Updatement<float>, IDependOnSplineCore
|
||||
{
|
||||
public SplineCore MySplineCore { get; set; }
|
||||
|
||||
protected override float Lerp(float begin, float end, float t)
|
||||
{
|
||||
@@ -33,15 +53,5 @@ namespace Demo.Game
|
||||
{
|
||||
ManualAddEntry(time, value, curveType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 绑定到样条线
|
||||
/// </summary>
|
||||
/// <param name="path">脚本位置</param>
|
||||
[Convention.RScript.Variable.Attr.Method]
|
||||
public void Load(SplineCore splineCore)
|
||||
{
|
||||
MySplineCore = splineCore;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user