public static NamedAssetPPtr ReadNamedAssetPPtr(AssetNameResolver namer, AssetTypeValueField field) { int fileId = field.Get("m_FileID").GetValue().AsInt(); long pathId = field.Get("m_PathID").GetValue().AsInt64(); return(namer.GetNamedPtr(new AssetPPtr(fileId, pathId))); }
public FsmGameObject(AssetNameResolver namer, AssetTypeValueField field) : base(field) { value = StructUtil.ReadNamedAssetPPtr(namer, field.Get("value")); if (name == "") { name = value.name; } }
public FsmEventTarget(AssetNameResolver namer, AssetTypeValueField field) { target = (EventTarget)field.Get("target").GetValue().AsInt(); excludeSelf = new FsmBool(namer, field.Get("excludeSelf")); gameObject = new FsmOwnerDefault(namer, field.Get("gameObject")); fsmName = new FsmString(namer, field.Get("fsmName")); sendToChildren = new FsmBool(namer, field.Get("sendToChildren")); fsmComponent = StructUtil.ReadNamedAssetPPtr(namer, field.Get("fsmComponent")); }
public FsmTemplateControl(AssetNameResolver namer, AssetTypeValueField field) { fsmTemplate = StructUtil.ReadAssetPPtr(field.Get("fsmTemplate")); fsmVarOverrides = new FsmVarOverride[field.Get("fsmVarOverrides").GetChildrenCount()]; for (int i = 0; i < fsmVarOverrides.Length; i++) { fsmVarOverrides[i] = new FsmVarOverride(namer, field.Get("fsmVarOverrides")[i]); } }
public FsmVar(AssetNameResolver namer, AssetTypeValueField field) { variableName = field.Get("variableName").GetValue().AsString(); objectType = field.Get("objectType").GetValue().AsString(); useVariable = field.Get("useVariable").GetValue().AsBool(); type = (VariableType)field.Get("type").GetValue().AsInt(); floatValue = field.Get("floatValue").GetValue().AsFloat(); intValue = field.Get("intValue").GetValue().AsInt(); boolValue = field.Get("boolValue").GetValue().AsBool(); stringValue = field.Get("stringValue").GetValue().AsString(); vector4Value = new Vector4(field.Get("vector4Value")); objectReference = StructUtil.ReadNamedAssetPPtr(namer, field.Get("objectReference")); arrayValue = new FsmArray(namer, field.Get("arrayValue")); }
public FsmState(AssetNameResolver namer, AssetTypeValueField field) { name = field.Get("name").GetValue().AsString(); description = field.Get("description").GetValue().AsString(); colorIndex = (byte)field.Get("colorIndex").GetValue().AsUInt(); position = new UnityRect(field.Get("position")); isBreakpoint = field.Get("isBreakpoint").GetValue().AsBool(); isSequence = field.Get("isSequence").GetValue().AsBool(); hideUnused = field.Get("hideUnused").GetValue().AsBool(); transitions = new FsmTransition[field.Get("transitions").GetChildrenCount()]; for (int i = 0; i < transitions.Length; i++) { transitions[i] = new FsmTransition(field.Get("transitions")[i]); } actionData = new ActionData(namer, field.Get("actionData")); }
public FsmFunctionCall(AssetNameResolver namer, AssetTypeValueField field) { FunctionName = field.Get("FunctionName").GetValue().AsString(); parameterType = field.Get("parameterType").GetValue().AsString(); BoolParameter = new FsmBool(namer, field.Get("BoolParameter")); FloatParameter = new FsmFloat(namer, field.Get("FloatParameter")); IntParameter = new FsmInt(namer, field.Get("IntParameter")); GameObjectParameter = new FsmGameObject(namer, field.Get("GameObjectParameter")); ObjectParameter = new FsmObject(namer, field.Get("ObjectParameter")); StringParameter = new FsmString(namer, field.Get("StringParameter")); Vector2Parameter = new FsmVector2(namer, field.Get("Vector2Parameter")); Vector3Parameter = new FsmVector3(namer, field.Get("Vector3Parameter")); RectParamater = new FsmRect(namer, field.Get("RectParamater")); QuaternionParameter = new FsmQuaternion(namer, field.Get("QuaternionParameter")); MaterialParameter = new FsmObject(namer, field.Get("MaterialParameter")); TextureParameter = new FsmObject(namer, field.Get("TextureParameter")); ColorParameter = new FsmColor(namer, field.Get("ColorParameter")); EnumParameter = new FsmEnum(namer, field.Get("EnumParameter")); ArrayParameter = new FsmArray(namer, field.Get("ArrayParameter")); }
public ActionData(AssetNameResolver namer, AssetTypeValueField field) { actionNames = StructUtil.ReadAssetList <string>(namer, field.Get("actionNames")); customNames = StructUtil.ReadAssetList <string>(namer, field.Get("customNames")); actionEnabled = StructUtil.ReadAssetList <bool>(namer, field.Get("actionEnabled")); actionIsOpen = StructUtil.ReadAssetList <bool>(namer, field.Get("actionIsOpen")); actionStartIndex = StructUtil.ReadAssetList <int>(namer, field.Get("actionStartIndex")); actionHashCodes = StructUtil.ReadAssetList <int>(namer, field.Get("actionHashCodes")); unityObjectParams = StructUtil.ReadAssetList <NamedAssetPPtr>(namer, field.Get("unityObjectParams")); fsmGameObjectParams = StructUtil.ReadAssetList <FsmGameObject>(namer, field.Get("fsmGameObjectParams")); fsmOwnerDefaultParams = StructUtil.ReadAssetList <FsmOwnerDefault>(namer, field.Get("fsmOwnerDefaultParams")); animationCurveParams = StructUtil.ReadAssetList <FsmAnimationCurve>(namer, field.Get("animationCurveParams")); functionCallParams = StructUtil.ReadAssetList <FsmFunctionCall>(namer, field.Get("functionCallParams")); fsmTemplateControlParams = StructUtil.ReadAssetList <FsmTemplateControl>(namer, field.Get("fsmTemplateControlParams")); fsmEventTargetParams = StructUtil.ReadAssetList <FsmEventTarget>(namer, field.Get("fsmEventTargetParams")); fsmPropertyParams = StructUtil.ReadAssetList <FsmProperty>(namer, field.Get("fsmPropertyParams")); layoutOptionParams = StructUtil.ReadAssetList <FsmLayoutOption>(namer, field.Get("layoutOptionParams")); fsmStringParams = StructUtil.ReadAssetList <FsmString>(namer, field.Get("fsmStringParams")); fsmObjectParams = StructUtil.ReadAssetList <FsmObject>(namer, field.Get("fsmObjectParams")); fsmVarParams = StructUtil.ReadAssetList <FsmVar>(namer, field.Get("fsmVarParams")); fsmArrayParams = StructUtil.ReadAssetList <FsmArray>(namer, field.Get("fsmArrayParams")); fsmEnumParams = StructUtil.ReadAssetList <FsmEnum>(namer, field.Get("fsmEnumParams")); fsmFloatParams = StructUtil.ReadAssetList <FsmFloat>(namer, field.Get("fsmFloatParams")); fsmIntParams = StructUtil.ReadAssetList <FsmInt>(namer, field.Get("fsmIntParams")); fsmBoolParams = StructUtil.ReadAssetList <FsmBool>(namer, field.Get("fsmBoolParams")); fsmVector2Params = StructUtil.ReadAssetList <FsmVector2>(namer, field.Get("fsmVector2Params")); fsmVector3Params = StructUtil.ReadAssetList <FsmVector3>(namer, field.Get("fsmVector3Params")); fsmColorParams = StructUtil.ReadAssetList <FsmColor>(namer, field.Get("fsmColorParams")); fsmRectParams = StructUtil.ReadAssetList <FsmRect>(namer, field.Get("fsmRectParams")); fsmQuaternionParams = StructUtil.ReadAssetList <FsmQuaternion>(namer, field.Get("fsmQuaternionParams")); stringParams = StructUtil.ReadAssetList <string>(namer, field.Get("stringParams")); byteData = StructUtil.ReadAssetList <byte>(namer, field.Get("byteData")); arrayParamSizes = StructUtil.ReadAssetList <int>(namer, field.Get("arrayParamSizes")); arrayParamTypes = StructUtil.ReadAssetList <string>(namer, field.Get("arrayParamTypes")); customTypeSizes = StructUtil.ReadAssetList <int>(namer, field.Get("customTypeSizes")); customTypeNames = StructUtil.ReadAssetList <string>(namer, field.Get("customTypeNames")); paramDataType = StructUtil.ReadAssetList <ParamDataType>(namer, field.Get("paramDataType")); paramName = StructUtil.ReadAssetList <string>(namer, field.Get("paramName")); paramDataPos = StructUtil.ReadAssetList <int>(namer, field.Get("paramDataPos")); paramByteDataSize = StructUtil.ReadAssetList <int>(namer, field.Get("paramByteDataSize")); }
public FsmProperty(AssetNameResolver namer, AssetTypeValueField field) { TargetObject = new FsmObject(namer, field.Get("TargetObject")); TargetTypeName = field.Get("TargetTypeName").GetValue().AsString(); PropertyName = field.Get("PropertyName").GetValue().AsString(); BoolParameter = new FsmBool(namer, field.Get("BoolParameter")); FloatParameter = new FsmFloat(namer, field.Get("FloatParameter")); IntParameter = new FsmInt(namer, field.Get("IntParameter")); GameObjectParameter = new FsmGameObject(namer, field.Get("GameObjectParameter")); ObjectParameter = new FsmObject(namer, field.Get("ObjectParameter")); StringParameter = new FsmString(namer, field.Get("StringParameter")); Vector2Parameter = new FsmVector2(namer, field.Get("Vector2Parameter")); Vector3Parameter = new FsmVector3(namer, field.Get("Vector3Parameter")); RectParamater = new FsmRect(namer, field.Get("RectParamater")); QuaternionParameter = new FsmQuaternion(namer, field.Get("QuaternionParameter")); MaterialParameter = new FsmObject(namer, field.Get("MaterialParameter")); TextureParameter = new FsmObject(namer, field.Get("TextureParameter")); ColorParameter = new FsmColor(namer, field.Get("ColorParameter")); EnumParameter = new FsmEnum(namer, field.Get("EnumParameter")); ArrayParameter = new FsmArray(namer, field.Get("ArrayParameter")); setProperty = field.Get("setProperty").GetValue().AsBool(); }
public FsmDataInstance LoadFSM(long id) { AssetFileInfoEx info = curFile.table.GetAssetInfo(id); AssetTypeValueField baseField = am.GetMonoBaseFieldCached(curFile, info, Path.Combine(Path.GetDirectoryName(curFile.path), "Managed")); AssetNameResolver namer = new AssetNameResolver(am, curFile); FsmDataInstance dataInstance = new FsmDataInstance(); AssetTypeValueField fsm = baseField.Get("fsm"); AssetTypeValueField states = fsm.Get("states"); AssetTypeValueField events = fsm.Get("events"); AssetTypeValueField variables = fsm.Get("variables"); AssetTypeValueField globalTransitions = fsm.Get("globalTransitions"); AssetTypeValueField dataVersionField = fsm.Get("dataVersion"); dataInstance.fsmName = fsm.Get("name").GetValue().AsString(); AssetTypeInstance goAti = am.GetExtAsset(curFile, baseField.Get("m_GameObject")).instance; if (goAti != null) { string m_Name = goAti.GetBaseField().Get("m_Name").GetValue().AsString(); dataInstance.goName = m_Name; } if (dataVersionField.IsDummy()) { dataInstance.dataVersion = fsm.Get("version").GetValue().AsInt() + 1; } else { dataInstance.dataVersion = dataVersionField.GetValue().AsInt(); } dataInstance.states = new List <FsmStateData>(); for (int i = 0; i < states.GetChildrenCount(); i++) { FsmStateData stateData = new FsmStateData(); stateData.ActionData = new List <ActionScriptEntry>(); stateData.state = new FsmState(namer, states[i]); stateData.node = new FsmNodeData(stateData.state); GetActionData(stateData.ActionData, stateData.state.actionData, dataInstance.dataVersion); dataInstance.states.Add(stateData); } dataInstance.events = new List <FsmEventData>(); for (int i = 0; i < events.GetChildrenCount(); i++) { FsmEventData eventData = new FsmEventData(); eventData.Global = events[i].Get("isGlobal").GetValue().AsBool(); eventData.Name = events[i].Get("name").GetValue().AsString(); dataInstance.events.Add(eventData); } dataInstance.variables = new List <FsmVariableData>(); GetVariableValues(dataInstance.variables, namer, variables); dataInstance.globalTransitions = new List <FsmNodeData>(); for (int i = 0; i < globalTransitions.GetChildrenCount(); i++) { AssetTypeValueField globalTransitionField = globalTransitions[i]; FsmGlobalTransition globalTransition = new FsmGlobalTransition() { fsmEvent = new FsmEvent(globalTransitionField.Get("fsmEvent")), toState = globalTransitionField.Get("toState").GetValue().AsString(), linkStyle = globalTransitionField.Get("linkStyle").GetValue().AsInt(), linkConstraint = globalTransitionField.Get("linkConstraint").GetValue().AsInt(), colorIndex = (byte)globalTransitionField.Get("colorIndex").GetValue().AsInt() }; FsmNodeData node = new FsmNodeData(dataInstance, globalTransition); dataInstance.globalTransitions.Add(node); } //dataInstance.events = new List<FsmEventData>(); //for (int i = 0; i < events.GetChildrenCount(); i++) //{ // FsmEventData eventData = new FsmEventData(); // AssetTypeValueField evt = events[i]; // eventData.Name = evt.Get("name").GetValue().AsString(); // eventData.Global = evt.Get("isGlobal").GetValue().AsBool(); //} // //dataInstance.variables = new List<FsmVariableData>(); //for (int i = 0; i < variables.GetChildrenCount(); i++) //{ // FsmVariableData variableData = new FsmVariableData(); // AssetTypeValueField vars = events[i]; //} return(dataInstance); }
private void GetVariableValues(List <FsmVariableData> varData, AssetNameResolver namer, AssetTypeValueField variables) { AssetTypeValueField floatVariables = variables.Get("floatVariables"); AssetTypeValueField intVariables = variables.Get("intVariables"); AssetTypeValueField boolVariables = variables.Get("boolVariables"); AssetTypeValueField stringVariables = variables.Get("stringVariables"); AssetTypeValueField vector2Variables = variables.Get("vector2Variables"); AssetTypeValueField vector3Variables = variables.Get("vector3Variables"); AssetTypeValueField colorVariables = variables.Get("colorVariables"); AssetTypeValueField rectVariables = variables.Get("rectVariables"); AssetTypeValueField quaternionVariables = variables.Get("quaternionVariables"); AssetTypeValueField gameObjectVariables = variables.Get("gameObjectVariables"); AssetTypeValueField objectVariables = variables.Get("objectVariables"); AssetTypeValueField materialVariables = variables.Get("materialVariables"); AssetTypeValueField textureVariables = variables.Get("textureVariables"); AssetTypeValueField arrayVariables = variables.Get("arrayVariables"); AssetTypeValueField enumVariables = variables.Get("enumVariables"); FsmVariableData floats = new FsmVariableData() { Type = "Floats", Values = new List <Tuple <string, object> >() }; varData.Add(floats); for (int i = 0; i < floatVariables.GetValue().AsArray().size; i++) { string name = floatVariables.Get(i).Get("name").GetValue().AsString(); object value = floatVariables.Get(i).Get("value").GetValue().AsFloat(); floats.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData ints = new FsmVariableData() { Type = "Ints", Values = new List <Tuple <string, object> >() }; varData.Add(ints); for (int i = 0; i < intVariables.GetValue().AsArray().size; i++) { string name = intVariables.Get(i).Get("name").GetValue().AsString(); object value = intVariables.Get(i).Get("value").GetValue().AsInt(); ints.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData bools = new FsmVariableData() { Type = "Bools", Values = new List <Tuple <string, object> >() }; varData.Add(bools); for (int i = 0; i < boolVariables.GetValue().AsArray().size; i++) { string name = boolVariables.Get(i).Get("name").GetValue().AsString(); object value = boolVariables.Get(i).Get("value").GetValue().AsBool().ToString(); bools.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData strings = new FsmVariableData() { Type = "Strings", Values = new List <Tuple <string, object> >() }; varData.Add(strings); for (int i = 0; i < stringVariables.GetValue().AsArray().size; i++) { string name = stringVariables.Get(i).Get("name").GetValue().AsString(); object value = stringVariables.Get(i).Get("value").GetValue().AsString(); strings.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData vector2s = new FsmVariableData() { Type = "Vector2s", Values = new List <Tuple <string, object> >() }; varData.Add(vector2s); for (int i = 0; i < vector2Variables.GetValue().AsArray().size; i++) { string name = vector2Variables.Get(i).Get("name").GetValue().AsString(); AssetTypeValueField vector2 = vector2Variables.Get(i).Get("value"); object value = new Vector2(vector2); vector2s.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData vector3s = new FsmVariableData() { Type = "Vector3s", Values = new List <Tuple <string, object> >() }; varData.Add(vector3s); for (int i = 0; i < vector3Variables.GetValue().AsArray().size; i++) { string name = vector3Variables.Get(i).Get("name").GetValue().AsString(); AssetTypeValueField vector3 = vector3Variables.Get(i).Get("value"); object value = new Vector2(vector3); vector3s.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData colors = new FsmVariableData() { Type = "Colors", Values = new List <Tuple <string, object> >() }; varData.Add(colors); for (int i = 0; i < colorVariables.GetValue().AsArray().size; i++) { string name = colorVariables.Get(i).Get("name").GetValue().AsString(); AssetTypeValueField color = colorVariables.Get(i).Get("value"); object value = new UnityColor(color); colors.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData rects = new FsmVariableData() { Type = "Rects", Values = new List <Tuple <string, object> >() }; varData.Add(rects); for (int i = 0; i < rectVariables.GetValue().AsArray().size; i++) { string name = rectVariables.Get(i).Get("name").GetValue().AsString(); AssetTypeValueField rect = rectVariables.Get(i).Get("value"); object value = new UnityRect(rect); rects.Values.Add(new Tuple <string, object>(name, value)); } FsmVariableData quaternions = new FsmVariableData() { Type = "Quaternions", Values = new List <Tuple <string, object> >() }; varData.Add(quaternions); for (int i = 0; i < quaternionVariables.GetValue().AsArray().size; i++) { string name = quaternionVariables.Get(i).Get("name").GetValue().AsString(); AssetTypeValueField quaternion = quaternionVariables.Get(i).Get("value"); object value = new Quaternion(quaternion); quaternions.Values.Add(new Tuple <string, object>(name, value)); } string[] pptrTypeHeaders = new[] { "GameObjects", "Objects", "Materials", "Textures" }; AssetTypeValueField[] pptrTypeFields = new[] { gameObjectVariables, objectVariables, materialVariables, textureVariables }; for (int j = 0; j < pptrTypeHeaders.Length; j++) { string header = pptrTypeHeaders[j]; AssetTypeValueField field = pptrTypeFields[j]; if (field.IsDummy()) { continue; } FsmVariableData genericData = new FsmVariableData() { Type = header, Values = new List <Tuple <string, object> >() }; varData.Add(genericData); for (int i = 0; i < field.GetValue().AsArray().size; i++) { string name = field.Get(i).Get("name").GetValue().AsString(); AssetTypeValueField valueField = field.Get(i).Get("value"); NamedAssetPPtr pptr = StructUtil.ReadNamedAssetPPtr(namer, valueField); object value; if (pptr.pathID == 0) { value = "[null]"; } else { value = pptr; } genericData.Values.Add(new Tuple <string, object>(name, value)); } } }
public FsmOwnerDefault(AssetNameResolver namer, AssetTypeValueField field) { ownerOption = (OwnerDefaultOption)field.Get("ownerOption").GetValue().AsInt(); gameObject = new FsmGameObject(namer, field.Get("gameObject")); }
public FsmObject(AssetNameResolver namer, AssetTypeValueField field) : base(field) { value = StructUtil.ReadNamedAssetPPtr(namer, field.Get("value")); }
public FsmString(AssetNameResolver namer, AssetTypeValueField field) : base(field) { value = field.Get("value").GetValue().AsString(); }
public static List <T> ReadAssetList <T>(AssetNameResolver namer, AssetTypeValueField field) { List <T> data = new List <T>(); int size = field.GetChildrenCount(); switch (typeof(T)) { case Type intType when intType == typeof(int): for (int i = 0; i < size; i++) { data.Add((T)(object)field[i].GetValue().AsInt()); } return(data); case Type stringType when stringType == typeof(string): for (int i = 0; i < size; i++) { data.Add((T)(object)field[i].GetValue().AsString()); } return(data); case Type boolType when boolType == typeof(bool): for (int i = 0; i < size; i++) { data.Add((T)(object)field[i].GetValue().AsBool()); } return(data); case Type byteType when byteType == typeof(byte): for (int i = 0; i < size; i++) { data.Add((T)(object)(byte)field[i].GetValue().AsInt()); } return(data); case Type enumType when enumType.IsEnum: for (int i = 0; i < size; i++) { data.Add((T)(object)field[i].GetValue().AsInt()); } return(data); //don't use this anymore, does not have name info case Type pptrType when pptrType == typeof(AssetPPtr): for (int i = 0; i < size; i++) { data.Add((T)(object)ReadAssetPPtr(field[i])); } return(data); case Type namedPPtrType when namedPPtrType == typeof(NamedAssetPPtr): for (int i = 0; i < size; i++) { data.Add((T)(object)ReadNamedAssetPPtr(namer, field[i])); } return(data); default: //no error checking so don't put something stupid for <T> for (int i = 0; i < size; i++) { data.Add((T)Activator.CreateInstance(typeof(T), namer, field[i])); } return(data); } }
public FsmLayoutOption(AssetNameResolver namer, AssetTypeValueField field) : base(field) { option = (LayoutOptionType)field.Get("option").GetValue().AsInt(); floatParam = new FsmFloat(namer, field.Get("floatParam")); boolParam = new FsmBool(namer, field.Get("boolParam")); }
public FsmAnimationCurve(AssetNameResolver namer, AssetTypeValueField field) { value = new AnimationCurve(namer, field); }