summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/XWeaponTrail/Scripts/VertexPool.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-03-10 14:07:40 +0800
committerchai <chaifix@163.com>2022-03-10 14:07:40 +0800
commit22891bf59032ba88262824255a706d652031384b (patch)
tree7595439ba9966c9402d37e37cee5e8cf098757d5 /Assets/ThirdParty/XWeaponTrail/Scripts/VertexPool.cs
parent8b04ea73e540067f83870b61d89db4868fea5e8a (diff)
* move folder
Diffstat (limited to 'Assets/ThirdParty/XWeaponTrail/Scripts/VertexPool.cs')
-rw-r--r--Assets/ThirdParty/XWeaponTrail/Scripts/VertexPool.cs282
1 files changed, 0 insertions, 282 deletions
diff --git a/Assets/ThirdParty/XWeaponTrail/Scripts/VertexPool.cs b/Assets/ThirdParty/XWeaponTrail/Scripts/VertexPool.cs
deleted file mode 100644
index 31d98d08..00000000
--- a/Assets/ThirdParty/XWeaponTrail/Scripts/VertexPool.cs
+++ /dev/null
@@ -1,282 +0,0 @@
-//----------------------------------------------
-// Xffect Editor
-// Copyright © 2012- Shallway Studio
-// http://shallway.net
-//----------------------------------------------
-using UnityEngine;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace XftWeapon {
-
- public class VertexPool
- {
- public class VertexSegment
- {
- public int VertStart;
- public int IndexStart;
- public int VertCount;
- public int IndexCount;
- public VertexPool Pool;
-
- public VertexSegment(int start, int count, int istart, int icount, VertexPool pool)
- {
- VertStart = start;
- VertCount = count;
- IndexCount = icount;
- IndexStart = istart;
- Pool = pool;
- }
-
-
- public void ClearIndices()
- {
- for (int i = IndexStart; i < IndexStart + IndexCount; i++)
- {
- Pool.Indices[i] = 0;
- }
-
- Pool.IndiceChanged = true;
- }
-
- }
-
- public Vector3[] Vertices;
- public int[] Indices;
- public Vector2[] UVs;
- public Color[] Colors;
-
- public bool IndiceChanged;
- public bool ColorChanged;
- public bool UVChanged;
- public bool VertChanged;
- public bool UV2Changed;
-
-
-
-
-
- protected int VertexTotal;
- protected int VertexUsed;
- protected int IndexTotal = 0;
- protected int IndexUsed = 0;
- public bool FirstUpdate = true;
-
- protected bool VertCountChanged;
-
-
- public const int BlockSize = 108;
-
- public float BoundsScheduleTime = 1f;
- public float ElapsedTime = 0f;
-
- protected XWeaponTrail _owner;
-
- protected MeshFilter _meshFilter;
-
- protected Mesh _mesh2d;
- protected Material _material;
-
- public Mesh MyMesh {
- get {
-
- if (!_owner.UseWith2D) {
- return _mesh2d;
- }
- else {
- if (_meshFilter == null || _meshFilter.gameObject == null) {
- return null;
- }
- return _meshFilter.sharedMesh;
- }
- }
- }
-
- public void RecalculateBounds()
- {
- MyMesh.RecalculateBounds();
- }
-
-
- public void SetMeshObjectActive(bool flag) {
- if (_meshFilter == null) {
- return;
- }
-
- _meshFilter.gameObject.SetActive(flag);
- }
-
- void CreateMeshObj(XWeaponTrail owner, Material material) {
- GameObject obj = new GameObject("_XWeaponTrailMesh:" + "|material:" + material.name);
- obj.layer = owner.gameObject.layer;
- obj.AddComponent<MeshFilter>();
- obj.AddComponent<MeshRenderer>();
-
- obj.transform.position = Vector3.zero;
- obj.transform.rotation = Quaternion.identity;
-
-
- MeshRenderer Meshrenderer;
- _meshFilter = (MeshFilter)obj.GetComponent(typeof(MeshFilter));
- Meshrenderer = (MeshRenderer)obj.GetComponent(typeof(MeshRenderer));
-#if UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_4_8
- Meshrenderer.castShadows = false;
-#else
- Meshrenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
-#endif
- Meshrenderer.receiveShadows = false;
- Meshrenderer.GetComponent<Renderer>().sharedMaterial = material;
- Meshrenderer.sortingLayerName = _owner.SortingLayerName;
- Meshrenderer.sortingOrder = _owner.SortingOrder;
- _meshFilter.sharedMesh = new Mesh();
- }
-
- public void Destroy() {
-
- if (!_owner.UseWith2D) {
- Mesh.DestroyImmediate(_mesh2d);
- }
- else {
- if (_meshFilter != null) {
- GameObject.Destroy(_meshFilter.gameObject);
- }
- }
- }
-
- public VertexPool(Material material, XWeaponTrail owner)
- {
- VertexTotal = VertexUsed = 0;
- VertCountChanged = false;
- _owner = owner;
- if (owner.UseWith2D) {
- CreateMeshObj(owner, material);
- }
- else {
- _mesh2d = new Mesh();
- }
- _material = material;
- InitArrays();
- IndiceChanged = ColorChanged = UVChanged = UV2Changed = VertChanged = true;
- }
-
-
- public VertexSegment GetVertices(int vcount, int icount)
- {
- int vertNeed = 0;
- int indexNeed = 0;
- if (VertexUsed + vcount >= VertexTotal)
- {
- vertNeed = (vcount / BlockSize + 1) * BlockSize;
- }
- if (IndexUsed + icount >= IndexTotal)
- {
- indexNeed = (icount / BlockSize + 1) * BlockSize;
- }
- VertexUsed += vcount;
- IndexUsed += icount;
- if (vertNeed != 0 || indexNeed != 0)
- {
- EnlargeArrays(vertNeed, indexNeed);
- VertexTotal += vertNeed;
- IndexTotal += indexNeed;
- }
-
- VertexSegment ret = new VertexSegment(VertexUsed - vcount, vcount, IndexUsed - icount, icount, this);
-
- return ret;
- }
-
-
- protected void InitArrays()
- {
- Vertices = new Vector3[4];
- UVs = new Vector2[4];
- Colors = new Color[4];
- Indices = new int[6];
- VertexTotal = 4;
- IndexTotal = 6;
- }
-
-
-
- public void EnlargeArrays(int count, int icount)
- {
- Vector3[] tempVerts = Vertices;
- Vertices = new Vector3[Vertices.Length + count];
- tempVerts.CopyTo(Vertices, 0);
-
- Vector2[] tempUVs = UVs;
- UVs = new Vector2[UVs.Length + count];
- tempUVs.CopyTo(UVs, 0);
-
- Color[] tempColors = Colors;
- Colors = new Color[Colors.Length + count];
- tempColors.CopyTo(Colors, 0);
-
- int[] tempTris = Indices;
- Indices = new int[Indices.Length + icount];
- tempTris.CopyTo(Indices, 0);
-
- VertCountChanged = true;
- IndiceChanged = true;
- ColorChanged = true;
- UVChanged = true;
- VertChanged = true;
- UV2Changed = true;
- }
-
-
-
-
- public void LateUpdate()
- {
- if (VertCountChanged)
- {
- MyMesh.Clear();
- }
-
- // we assume the vertices are always changed.
- MyMesh.vertices = Vertices;
- if (UVChanged)
- {
- MyMesh.uv = UVs;
- }
-
- if (ColorChanged)
- {
- MyMesh.colors = Colors;
- }
-
- if (IndiceChanged)
- {
- MyMesh.triangles = Indices;
- }
-
- ElapsedTime += Time.deltaTime;
- if (ElapsedTime > BoundsScheduleTime || FirstUpdate)
- {
- RecalculateBounds();
- ElapsedTime = 0f;
- }
-
- if (ElapsedTime > BoundsScheduleTime)
- FirstUpdate = false;
-
- VertCountChanged = false;
- IndiceChanged = false;
- ColorChanged = false;
- UVChanged = false;
- UV2Changed = false;
- VertChanged = false;
-
-
- if (_owner.UseWith2D) {
-
- }
- else {
- //Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, Vector3.one);
- Graphics.DrawMesh(MyMesh, Matrix4x4.identity, _material, _owner.gameObject.layer, null, 0, null, false, false);
- }
- }
- }
-} \ No newline at end of file