| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 | using System;using System.Collections.Generic;using System.IO;using System.Reflection;using UnityEngine;public class AMBinaryProperty : AMBinaryDataBaseObject{	public static bool CheckType(AMTrack track)	{		if (track == null)		{			return false;		}		AMPropertyTrack ampropertyTrack = track as AMPropertyTrack;		if (ampropertyTrack == null || ampropertyTrack.propertyInfo == null)		{			return false;		}		int[] array = new int[]		{			0,			2,			5,			6		};		for (int i = 0; i < array.Length; i++)		{			if (ampropertyTrack.valueType == array[i])			{				return true;			}		}		return false;	}	public override void Update(int frame)	{		if (Application.isPlaying && GameMain.Instance.VRMode && this.property_name == "fov" && this.component is Camera)		{			return;		}		int index = base.GetIndex(frame);		if (this.value_type == AMPropertyTrack.ValueType.Integer)		{			this.prop_info.SetValue(this.component, this.int_val_array[index], null);		}		else if (this.value_type == AMPropertyTrack.ValueType.Float)		{			this.prop_info.SetValue(this.component, this.float_val_array[index], null);		}		else if (this.value_type == AMPropertyTrack.ValueType.Vector3)		{			this.prop_info.SetValue(this.component, this.vec3_val_array[index], null);		}		else if (this.value_type == AMPropertyTrack.ValueType.Color)		{			this.prop_info.SetValue(this.component, this.color_val_array[index], null);		}	}	public override void Write(BinaryWriter binary)	{		base.Write(binary);		binary.Write((int)this.value_type);		binary.Write(this.component_name);		binary.Write(this.property_name);		List<KeyValuePair<int, int>> list = new List<KeyValuePair<int, int>>();		if (this.value_type == AMPropertyTrack.ValueType.Integer)		{			this.int_val_array = base.Compression<int>(ref this.int_val_array, out list);			binary.Write(this.int_val_array.Length);			for (int i = 0; i < this.int_val_array.Length; i++)			{				binary.Write(this.int_val_array[i]);			}		}		else if (this.value_type == AMPropertyTrack.ValueType.Float)		{			this.float_val_array = base.Compression<float>(ref this.float_val_array, out list);			binary.Write(this.float_val_array.Length);			for (int j = 0; j < this.float_val_array.Length; j++)			{				binary.Write(this.float_val_array[j]);			}		}		else if (this.value_type == AMPropertyTrack.ValueType.Vector3)		{			this.vec3_val_array = base.Compression<Vector3>(ref this.vec3_val_array, out list);			binary.Write(this.vec3_val_array.Length);			for (int k = 0; k < this.vec3_val_array.Length; k++)			{				binary.Write(this.vec3_val_array[k].x);				binary.Write(this.vec3_val_array[k].y);				binary.Write(this.vec3_val_array[k].z);			}		}		else if (this.value_type == AMPropertyTrack.ValueType.Color)		{			this.color_val_array = base.Compression<Color>(ref this.color_val_array, out list);			binary.Write(this.color_val_array.Length);			for (int l = 0; l < this.color_val_array.Length; l++)			{				binary.Write(this.color_val_array[l].a);				binary.Write(this.color_val_array[l].r);				binary.Write(this.color_val_array[l].g);				binary.Write(this.color_val_array[l].b);			}		}		binary.Write(list.Count);		for (int m = 0; m < list.Count; m++)		{			KeyValuePair<int, int> keyValuePair = list[m];			binary.Write(keyValuePair.Key);			binary.Write(keyValuePair.Value);		}	}	public override void Read(BinaryReader binary)	{		this.value_type = (AMPropertyTrack.ValueType)(-1);		this.int_val_array = null;		this.float_val_array = null;		this.color_val_array = null;		this.vec3_val_array = null;		base.Read(binary);		this.value_type = (AMPropertyTrack.ValueType)binary.ReadInt32();		this.component_name = binary.ReadString();		this.property_name = binary.ReadString();		if (this.value_type == AMPropertyTrack.ValueType.Integer)		{			int num = binary.ReadInt32();			this.int_val_array = new int[num];			for (int i = 0; i < this.int_val_array.Length; i++)			{				this.int_val_array[i] = binary.ReadInt32();			}		}		else if (this.value_type == AMPropertyTrack.ValueType.Float)		{			int num2 = binary.ReadInt32();			this.float_val_array = new float[num2];			for (int j = 0; j < this.float_val_array.Length; j++)			{				this.float_val_array[j] = binary.ReadSingle();			}		}		else if (this.value_type == AMPropertyTrack.ValueType.Vector3)		{			int num3 = binary.ReadInt32();			this.vec3_val_array = new Vector3[num3];			for (int k = 0; k < this.vec3_val_array.Length; k++)			{				Vector3 zero = Vector3.zero;				zero.x = binary.ReadSingle();				zero.y = binary.ReadSingle();				zero.z = binary.ReadSingle();				this.vec3_val_array[k] = zero;			}		}		else if (this.value_type == AMPropertyTrack.ValueType.Color)		{			int num4 = binary.ReadInt32();			this.color_val_array = new Color[num4];			for (int l = 0; l < this.color_val_array.Length; l++)			{				Color color;				color.a = binary.ReadSingle();				color.r = binary.ReadSingle();				color.g = binary.ReadSingle();				color.b = binary.ReadSingle();				this.color_val_array[l] = color;			}		}		int num5 = binary.ReadInt32();		this.index_array = new KeyValuePair<int, int>[num5];		for (int m = 0; m < this.index_array.Length; m++)		{			int key = binary.ReadInt32();			int value = binary.ReadInt32();			this.index_array[m] = new KeyValuePair<int, int>(key, value);		}		this.component = base.obj.GetComponent(this.component_name);		this.prop_info = this.component.GetType().GetProperty(this.property_name);	}	public override void SetGameObject(GameObject new_obj)	{		base.obj = new_obj;		this.component = base.obj.GetComponent(this.component_name);		this.prop_info = this.component.GetType().GetProperty(this.property_name);	}	public override string type_name	{		get		{			return AMBinaryProperty.kTypeName;		}	}	public static string kTypeName = "Property";	public AMPropertyTrack.ValueType value_type;	public string component_name;	public string property_name;	public PropertyInfo prop_info;	public Component component;	public int[] int_val_array;	public float[] float_val_array;	public Color[] color_val_array;	public Vector3[] vec3_val_array;}
 |