void InitDsgVarsTreeIfNeeded(Rect transitionsRect, DsgVarComponent target) { if (treeviewDsgVars == null || treeviewDsgVarsState == null || treeviewDsgVars.target != target) { treeviewDsgVarsState = new TreeViewState(); bool firstInit = m_MultiColumnHeaderState == null; var headerState = DsgVarsTreeView.CreateDefaultMultiColumnHeaderState(transitionsRect.width); if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState)) { MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState); } m_MultiColumnHeaderState = headerState; var multiColumnHeader = new MultiColumnHeader(headerState); if (firstInit) { multiColumnHeader.ResizeToFit(); } var treeModel = new TreeModel <DsgVarsTreeElement>(GetData()); treeviewDsgVars = new DsgVarsTreeView(treeviewDsgVarsState, multiColumnHeader, treeModel) { target = target }; } }
private WebJSON.DsgVar[] GetDsgVarsJSON(BasePersoBehaviour perso) { DsgVarComponent dsgComponent = perso?.brain?.dsgVars; if (dsgComponent != null && dsgComponent.editableEntries != null && dsgComponent.editableEntries.Length > 0) { return(dsgComponent.editableEntries.Select(e => GetDsgVarJSON(e)).ToArray()); } return(null); }
public override void OnInspectorGUI() { DrawDefaultInspector(); DsgVarComponent c = (DsgVarComponent)target; GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.Label("Type/name"); GUILayout.Label("Current value"); GUILayout.Label("Initial value"); GUILayout.EndHorizontal(); foreach (DsgVarComponent.DsgVarEditableEntry entry in c.editableEntries) { GUILayout.BeginHorizontal(); DrawDsgVarEntry(entry); GUILayout.EndHorizontal(); } if (GUILayout.Button("Print initial dsgvar assignments")) { string printResult = ""; foreach (DsgVarComponent.DsgVarEditableEntry dsgVarEntry in c.editableEntries) { printResult += DsgVarUtil.DsgVarEntryToCSharpAssignment(dsgVarEntry.entry) + Environment.NewLine; } MapLoader.Loader.print(printResult); } if (GUILayout.Button("Print dsgvar value offsets")) { string printResult = ""; DsgMem dsgMem = c.dsgMem; foreach (DsgVarComponent.DsgVarEditableEntry dsgVarEntry in c.editableEntries) { Pointer offsetOfValue = (dsgMem.memBuffer + dsgVarEntry.entry.offsetInBuffer); printResult += dsgVarEntry.entry.NiceVariableName + " " + offsetOfValue + Environment.NewLine; } MapLoader.Loader.print(printResult); } GUILayout.EndVertical(); }
private JSONArray GetDsgVarsJSON(Perso perso) { JSONArray dsgVarsJSON = new JSONArray(); DsgVarComponent dsgComponent = perso.Gao.GetComponent <DsgVarComponent>(); if (dsgComponent != null && dsgComponent.dsgVarEntries != null && dsgComponent.dsgVarEntries.Length > 0) { foreach (DsgVarComponent.DsgVarEditableEntry dsg in dsgComponent.editableEntries) { dsgVarsJSON.Add(GetDsgVarJSON(perso, dsg)); } } return(dsgVarsJSON); }
IList <DsgVarsTreeElement> GetData() { DsgVarComponent pb = (DsgVarComponent)target; List <DsgVarsTreeElement> tr = new List <DsgVarsTreeElement>(); tr.Add(new DsgVarsTreeElement("Hidden root", -1, -1)); bool visibleCurrent = false; bool visibleInitial = false; bool visibleModel = false; if (pb.editableEntries.Length > 0) { int id = 0; foreach (DsgVarComponent.DsgVarEditableEntry entry in pb.editableEntries) { DsgVarsTreeElement el = new DsgVarsTreeElement(entry.Name, 0, id) { entry = entry }; if (entry.valueCurrent != null) { visibleCurrent = true; } if (entry.valueInitial != null) { visibleInitial = true; } if (entry.valueModel != null) { visibleModel = true; } tr.Add(el); id++; if (entry.IsArray) { el.children = new List <TreeElement>(); int length = entry.ArrayLength; for (int i = 0; i < length; i++) { DsgVarsTreeElement el2 = new DsgVarsTreeElement(entry.Name + "[" + i + "]", 1, id) { entry = entry, arrayIndex = i }; tr.Add(el2); id++; } } } // Activate columns List <int> visibleColumns = m_MultiColumnHeaderState.visibleColumns.ToList(); if (visibleCurrent != visibleColumns.Contains((int)DsgVarsTreeView.Columns.CurrentValue)) { if (visibleCurrent) { visibleColumns.Add((int)DsgVarsTreeView.Columns.CurrentValue); } else { visibleColumns.Remove((int)DsgVarsTreeView.Columns.CurrentValue); } } if (visibleInitial != visibleColumns.Contains((int)DsgVarsTreeView.Columns.InitialValue)) { if (visibleInitial) { visibleColumns.Add((int)DsgVarsTreeView.Columns.InitialValue); } else { visibleColumns.Remove((int)DsgVarsTreeView.Columns.InitialValue); } } if (visibleModel != visibleColumns.Contains((int)DsgVarsTreeView.Columns.ModelValue)) { if (visibleModel) { visibleColumns.Add((int)DsgVarsTreeView.Columns.ModelValue); } else { visibleColumns.Remove((int)DsgVarsTreeView.Columns.ModelValue); } } m_MultiColumnHeaderState.visibleColumns = visibleColumns.ToArray(); } return(tr); }
public override void OnInspectorGUI() { DrawDefaultInspector(); DsgVarComponent c = (DsgVarComponent)target; if (c.editableEntries != null) { Rect rect = GUILayoutUtility.GetRect(EditorGUIUtility.currentViewWidth, 400f); InitDsgVarsTreeIfNeeded(rect, c); if (treeviewDsgVars.target != c) { treeviewDsgVars.target = c; treeviewDsgVars.treeModel.SetData(GetData()); treeviewDsgVars.Reload(); } treeviewDsgVars.OnGUI(rect); } //GUILayout.BeginVertical(); /*GUILayout.BeginHorizontal(); * * GUILayout.Label("Type/name"); * GUILayout.Label("Current value"); * GUILayout.Label("Initial value"); * * GUILayout.EndHorizontal(); * * foreach (DsgVarComponent.DsgVarEditableEntry entry in c.editableEntries) { * * GUILayout.BeginHorizontal(); * * DrawDsgVarEntry(entry); * * GUILayout.EndHorizontal(); * }*/ /*if (GUILayout.Button("Print initial dsgvar assignments")) { * * string printResult = ""; * * foreach (DsgVarComponent.DsgVarEditableEntry dsgVarEntry in c.editableEntries) { * * printResult += DsgVarUtil.DsgVarEntryToCSharpAssignment(dsgVarEntry.entry) + Environment.NewLine; * } * * MapLoader.Loader.print(printResult); * }*/ if (GUILayout.Button("Print dsgvar value offsets")) { string printResult = ""; DsgMem dsgMem = c.dsgMem; foreach (DsgVarComponent.DsgVarEditableEntry dsgVarEntry in c.editableEntries) { Pointer offsetOfValue = (dsgMem.memBuffer + dsgVarEntry.entry.offsetInBuffer); printResult += dsgVarEntry.entry.NiceVariableName + " " + offsetOfValue + Environment.NewLine; } MapLoader.Loader.print(printResult); } //GUILayout.EndVertical(); }
public void UpdateLivePreview() { Reader reader = MapLoader.Loader.livePreviewReader; foreach (SuperObject so in MapLoader.Loader.superObjects) { if (!(so.data is Perso)) { continue; } if (so.off_matrix == null) { continue; } Pointer.Goto(ref reader, so.off_matrix); so.matrix = Matrix.Read(MapLoader.Loader.livePreviewReader, so.off_matrix); if (so.data != null && so.data.Gao != null) { so.data.Gao.transform.localPosition = so.matrix.GetPosition(convertAxes: true); so.data.Gao.transform.localRotation = so.matrix.GetRotation(convertAxes: true); so.data.Gao.transform.localScale = so.matrix.GetScale(convertAxes: true); if (so.data is Perso) { Perso perso = (Perso)so.data; PersoBehaviour pb = perso.Gao.GetComponent <PersoBehaviour>(); if (pb != null) { Pointer.Goto(ref reader, perso.p3dData.offset); perso.p3dData.UpdateCurrentState(reader); // State offset changed? if (perso.p3dData.stateCurrent != null) { pb.SetState(perso.p3dData.stateCurrent.index); pb.autoNextState = true; } } MindComponent mc = perso.Gao.GetComponent <MindComponent>(); if (mc != null) { Mind mind = mc.mind; Pointer.DoAt(ref reader, mind.Offset, () => { mind.UpdateCurrentBehaviors(reader); }); } DsgVarComponent dsgVarComponent = perso.Gao.GetComponent <DsgVarComponent>(); if (dsgVarComponent != null) { dsgVarComponent.SetPerso(perso); } CustomBitsComponent customBitsComponent = perso.Gao.GetComponent <CustomBitsComponent>(); if (customBitsComponent != null) { Pointer.Goto(ref reader, perso.off_stdGame); perso.stdGame = StandardGame.Read(reader, perso.off_stdGame); customBitsComponent.stdGame = perso.stdGame; customBitsComponent.Init(); } DynamicsMechanicsComponent dnComponent = perso.Gao.GetComponent <DynamicsMechanicsComponent>(); if (dnComponent != null) { Pointer.DoAt(ref reader, perso.off_dynam, () => { perso.dynam = Dynam.Read(reader, perso.off_dynam); }); dnComponent.SetDynamics(perso.dynam.dynamics); } } } } Perso camera = loader.persos.FirstOrDefault(p => p != null && p.namePerso.Equals("StdCamer")); if (camera != null) { SuperObject cameraSO = camera.SuperObject; Pointer.Goto(ref reader, cameraSO.off_matrix); cameraSO.matrix = Matrix.Read(reader, cameraSO.off_matrix); camera.Gao.transform.localPosition = cameraSO.matrix.GetPosition(convertAxes: true); camera.Gao.transform.localRotation = cameraSO.matrix.GetRotation(convertAxes: true); camera.Gao.transform.localScale = cameraSO.matrix.GetScale(convertAxes: true); Camera.main.transform.position = camera.Gao.transform.position; Camera.main.transform.rotation = camera.Gao.transform.rotation * Quaternion.Euler(0, 180, 0); } }
async Task InitPersos() { if (loader != null) { for (int i = 0; i < loader.persos.Count; i++) { detailedState = "Initializing persos: " + i + "/" + loader.persos.Count; await WaitIfNecessary(); Perso p = loader.persos[i]; PersoBehaviour unityBehaviour = p.Gao.AddComponent <PersoBehaviour>(); unityBehaviour.controller = this; if (loader.globals != null && loader.globals.spawnablePersos != null) { if (loader.globals.spawnablePersos.IndexOf(p) > -1) { unityBehaviour.IsAlways = true; unityBehaviour.transform.position = new Vector3(i * 10, -1000, 0); } } if (!unityBehaviour.IsAlways) { if (p.sectInfo != null && p.sectInfo.off_sector != null) { unityBehaviour.sector = sectorManager.sectors.FirstOrDefault(s => s.sector != null && s.sector.SuperObject.offset == p.sectInfo.off_sector); } else { SectorComponent sc = sectorManager.GetActiveSectorWrapper(p.Gao.transform.position); unityBehaviour.sector = sc; } } else { unityBehaviour.sector = null; } unityBehaviour.perso = p; unityBehaviour.Init(); // Scripts if (p.Gao) { if (p.brain != null && p.brain.mind != null && p.brain.mind.AI_model != null) { if (p.brain.mind.AI_model.behaviors_normal != null) { GameObject intelParent = new GameObject("Rule behaviours"); intelParent.transform.parent = p.Gao.transform; Behavior[] normalBehaviors = p.brain.mind.AI_model.behaviors_normal; int iter = 0; foreach (Behavior behavior in normalBehaviors) { string shortName = behavior.GetShortName(p.brain.mind.AI_model, Behavior.BehaviorType.Intelligence, iter); GameObject behaviorGao = new GameObject(shortName); behaviorGao.transform.parent = intelParent.transform; foreach (Script script in behavior.scripts) { GameObject scriptGao = new GameObject("Script"); scriptGao.transform.parent = behaviorGao.transform; ScriptComponent scriptComponent = scriptGao.AddComponent <ScriptComponent>(); scriptComponent.SetScript(script, p); } if (behavior.firstScript != null) { ScriptComponent scriptComponent = behaviorGao.AddComponent <ScriptComponent>(); scriptComponent.SetScript(behavior.firstScript, p); } if (iter == 0) { behaviorGao.name += " (Init)"; } if ((behavior.scripts == null || behavior.scripts.Length == 0) && behavior.firstScript == null) { behaviorGao.name += " (Empty)"; } iter++; } } if (p.brain.mind.AI_model.behaviors_reflex != null) { GameObject reflexParent = new GameObject("Reflex behaviours"); reflexParent.transform.parent = p.Gao.transform; Behavior[] reflexBehaviors = p.brain.mind.AI_model.behaviors_reflex; int iter = 0; foreach (Behavior behavior in reflexBehaviors) { string shortName = behavior.GetShortName(p.brain.mind.AI_model, Behavior.BehaviorType.Reflex, iter); GameObject behaviorGao = new GameObject(shortName); behaviorGao.transform.parent = reflexParent.transform; foreach (Script script in behavior.scripts) { GameObject scriptGao = new GameObject("Script"); scriptGao.transform.parent = behaviorGao.transform; ScriptComponent scriptComponent = scriptGao.AddComponent <ScriptComponent>(); scriptComponent.SetScript(script, p); } if (behavior.firstScript != null) { ScriptComponent scriptComponent = behaviorGao.AddComponent <ScriptComponent>(); scriptComponent.SetScript(behavior.firstScript, p); } if ((behavior.scripts == null || behavior.scripts.Length == 0) && behavior.firstScript == null) { behaviorGao.name += " (Empty)"; } iter++; } } if (p.brain.mind.AI_model.macros != null) { GameObject macroParent = new GameObject("Macros"); macroParent.transform.parent = p.Gao.transform; Macro[] macros = p.brain.mind.AI_model.macros; int iter = 0; foreach (Macro macro in macros) { GameObject behaviorGao = new GameObject(macro.GetShortName(p.brain.mind.AI_model, iter)); behaviorGao.transform.parent = macroParent.transform; ScriptComponent scriptComponent = behaviorGao.AddComponent <ScriptComponent>(); scriptComponent.SetScript(macro.script, p); iter++; } } } } } // Initialize DSGVars after all persos have their perso behaviours for (int i = 0; i < loader.persos.Count; i++) { Perso p = loader.persos[i]; Moddable mod = null; if (p.SuperObject != null && p.SuperObject.Gao != null) { mod = p.SuperObject.Gao.GetComponent <Moddable>(); if (mod != null) { mod.persoBehaviour = p.Gao.GetComponent <PersoBehaviour>(); } } if (p.Gao && p.brain != null && p.brain.mind != null && p.brain.mind.AI_model != null) { // DsgVars if (p.brain.mind.dsgMem != null || p.brain.mind.AI_model.dsgVar != null) { DsgVarComponent dsgVarComponent = p.Gao.AddComponent <DsgVarComponent>(); dsgVarComponent.SetPerso(p); if (mod != null) { mod.dsgVarComponent = dsgVarComponent; } } // Dynam if (p.dynam != null && p.dynam.dynamics != null) { DynamicsMechanicsComponent dynamicsBehaviour = p.Gao.AddComponent <DynamicsMechanicsComponent>(); dynamicsBehaviour.SetDynamics(p.dynam.dynamics); } // Mind if (p.brain != null && p.brain.mind != null) { MindComponent mindComponent = p.Gao.AddComponent <MindComponent>(); mindComponent.Init(p, p.brain.mind); if (mod != null) { mod.mindComponent = mindComponent; } } // Custom Bits if (p.stdGame != null) { CustomBitsComponent c = p.Gao.AddComponent <CustomBitsComponent>(); c.stdGame = p.stdGame; if (Settings.s.engineVersion == Settings.EngineVersion.R3) { c.hasAiCustomBits = true; } c.Init(); } } } } if (loader is OpenSpace.Loader.R2ROMLoader) { OpenSpace.Loader.R2ROMLoader romLoader = loader as OpenSpace.Loader.R2ROMLoader; if (romPersos.Count > 0) { for (int i = 0; i < romPersos.Count; i++) { detailedState = "Initializing persos: " + i + "/" + romPersos.Count; await WaitIfNecessary(); ROMPersoBehaviour unityBehaviour = romPersos[i]; unityBehaviour.controller = this; /*if (loader.globals != null && loader.globals.spawnablePersos != null) { * if (loader.globals.spawnablePersos.IndexOf(p) > -1) { * unityBehaviour.IsAlways = true; * unityBehaviour.transform.position = new Vector3(i * 10, -1000, 0); * } * }*/ if (!unityBehaviour.IsAlways) { SectorComponent sc = sectorManager.GetActiveSectorWrapper(unityBehaviour.transform.position); unityBehaviour.sector = sc; } else { unityBehaviour.sector = null; } /*Moddable mod = null; * if (p.SuperObject != null && p.SuperObject.Gao != null) { * mod = p.SuperObject.Gao.GetComponent<Moddable>(); * if (mod != null) { * mod.persoBehaviour = unityBehaviour; * } * }*/ unityBehaviour.Init(); var iteratorPerso = unityBehaviour.perso; // Of sound brain and AI model? if (iteratorPerso.brain?.Value?.aiModel?.Value != null) { var aiModel = iteratorPerso.brain.Value.aiModel.Value; // DsgVars if (iteratorPerso.brain?.Value?.dsgMem?.Value != null || aiModel.dsgVar?.Value != null) { DsgVarComponent dsgVarComponent = unityBehaviour.gameObject.AddComponent <DsgVarComponent>(); dsgVarComponent.SetPerso(iteratorPerso); } // Comports if (aiModel.comportsIntelligence.Value != null) { aiModel.comportsIntelligence.Value.CreateGameObjects("Rule", unityBehaviour.gameObject, iteratorPerso); } if (aiModel.comportsReflex.Value != null) { aiModel.comportsReflex.Value.CreateGameObjects("Reflex", unityBehaviour.gameObject, iteratorPerso); } } } } if (romLoader.level != null && romLoader.level.spawnablePersos.Value != null && romLoader.level.num_spawnablepersos > 0) { GameObject spawnableParent = new GameObject("Spawnable persos"); for (int i = 0; i < romLoader.level.num_spawnablepersos; i++) { detailedState = "Initializing spawnable persos: " + i + "/" + romLoader.level.num_spawnablepersos; await WaitIfNecessary(); OpenSpace.ROM.SuperObjectDynamic sod = romLoader.level.spawnablePersos.Value.superObjects[i]; GameObject sodGao = sod.GetGameObject(); if (sodGao != null) { ROMPersoBehaviour unityBehaviour = sodGao.GetComponent <ROMPersoBehaviour>(); unityBehaviour.controller = this; unityBehaviour.IsAlways = true; unityBehaviour.transform.SetParent(spawnableParent.transform); unityBehaviour.transform.position = new Vector3(i * 10, -1000, 0); unityBehaviour.transform.rotation = Quaternion.identity; unityBehaviour.transform.localScale = Vector3.one; if (!unityBehaviour.IsAlways) { SectorComponent sc = sectorManager.GetActiveSectorWrapper(unityBehaviour.transform.position); unityBehaviour.sector = sc; } else { unityBehaviour.sector = null; } unityBehaviour.Init(); var iteratorPerso = unityBehaviour.perso; // Of sound brain and AI model? if (iteratorPerso.brain?.Value?.aiModel?.Value != null) { var aiModel = iteratorPerso.brain.Value.aiModel.Value; // DsgVars if (iteratorPerso.brain?.Value?.dsgMem?.Value != null || aiModel.dsgVar?.Value != null) { DsgVarComponent dsgVarComponent = unityBehaviour.gameObject.AddComponent <DsgVarComponent>(); dsgVarComponent.SetPerso(iteratorPerso); } // Comports if (aiModel.comportsIntelligence.Value != null) { aiModel.comportsIntelligence.Value.CreateGameObjects("Rule", unityBehaviour.gameObject, iteratorPerso); } if (aiModel.comportsReflex.Value != null) { aiModel.comportsReflex.Value.CreateGameObjects("Reflex", unityBehaviour.gameObject, iteratorPerso); } } } } } } }
public override void OnInspectorGUI() { DrawDefaultInspector(); DsgVarComponent c = (DsgVarComponent)target; if (c.editableEntries != null) { Rect rect = GUILayoutUtility.GetRect(EditorGUIUtility.currentViewWidth, 400f); InitDsgVarsTreeIfNeeded(rect, c); if (treeviewDsgVars.target != c) { treeviewDsgVars.target = c; treeviewDsgVars.treeModel.SetData(GetData()); treeviewDsgVars.Reload(); } treeviewDsgVars.OnGUI(rect); } //GUILayout.BeginVertical(); /*GUILayout.BeginHorizontal(); * * GUILayout.Label("Type/name"); * GUILayout.Label("Current value"); * GUILayout.Label("Initial value"); * * GUILayout.EndHorizontal(); * * foreach (DsgVarComponent.DsgVarEditableEntry entry in c.editableEntries) { * * GUILayout.BeginHorizontal(); * * DrawDsgVarEntry(entry); * * GUILayout.EndHorizontal(); * }*/ /*if (GUILayout.Button("Print initial dsgvar assignments")) { * * string printResult = ""; * * foreach (DsgVarComponent.DsgVarEditableEntry dsgVarEntry in c.editableEntries) { * * printResult += DsgVarUtil.DsgVarEntryToCSharpAssignment(dsgVarEntry.entry) + Environment.NewLine; * } * * MapLoader.Loader.print(printResult); * }*/ if (GUILayout.Button("Print dsgvar value offsets")) { string printResult = ""; DsgMem dsgMem = c.dsgMem; foreach (DsgVarComponent.DsgVarEditableEntry dsgVarEntry in c.editableEntries) { Pointer offsetOfValue = (dsgMem.memBuffer + dsgVarEntry.entry.offsetInBuffer); printResult += dsgVarEntry.entry.NiceVariableName + " " + offsetOfValue + Environment.NewLine; } MapLoader.Loader.print(printResult); } if (GUILayout.Button("Copy DsgVars as CheatEngine table")) { string printResult = ""; DsgMem dsgMem = c.dsgMem; foreach (DsgVarComponent.DsgVarEditableEntry dsgVarEntry in c.editableEntries) { Pointer offsetOfValue = (dsgMem.memBuffer + dsgVarEntry.entry.offsetInBuffer); string variableType; switch (dsgVarEntry.Type) { case DsgVarType.Float: variableType = "Float"; break; case DsgVarType.Byte: variableType = "Byte"; break; case DsgVarType.UByte: variableType = "Byte"; break; case DsgVarType.Short: variableType = "2 Bytes"; break; case DsgVarType.UShort: variableType = "2 Bytes"; break; case DsgVarType.Vector: variableType = "Float"; break; case DsgVarType.Boolean: variableType = "Byte"; break; default: variableType = "4 Bytes"; break; } for (int i = 0; i <= ((dsgVarEntry.Type == DsgVarType.Vector) ? 8 : 0); i += 4) { printResult += "<CheatEntry>" + $"<ID>0</ID>" + $"<Description>\"{dsgVarEntry.entry.NiceVariableName}\"</Description>" + $"<LastState Value=\"\" RealAddress=\"{(offsetOfValue+i).offset.ToString("X8")}\"/>" + $"<VariableType>{variableType}</VariableType>" + $"<Address>{(offsetOfValue + i).offset.ToString("X8")}</Address>" + "</CheatEntry>"; } } printResult = $"<?xml version=\"1.0\" encoding=\"utf-8\"?><CheatTable><CheatEntries>{printResult}</CheatEntries></CheatTable>"; cheatTableString = printResult; EditorGUIUtility.systemCopyBuffer = cheatTableString; } //GUILayout.EndVertical(); }
// Update is called once per frame void Update() { if (raymanGAO == null) { GameObject[] gameObjects = FindObjectsOfType(typeof(GameObject)) as GameObject[]; foreach (GameObject gao in gameObjects) { if (gao.name.Contains("YLT_RaymanModel")) { raymanGAO = gao; break; } } } else { DsgVarComponent dsgVarComponent = raymanGAO.GetComponent <DsgVarComponent>(); if (dsgVarComponent != null) { DsgVarInfoEntry vector38Entry = null; DsgVarInfoEntry vector40Entry = null; if (Settings.s.game == Settings.Game.R2) { vector38Entry = dsgVarComponent.dsgVarEntries[38]; vector40Entry = dsgVarComponent.dsgVarEntries[40]; } else if (Settings.s.game == Settings.Game.R3) { return; /*vector38Entry = dsgVarComponent.dsgVarEntries[38]; * vector40Entry = dsgVarComponent.dsgVarEntries[40];*/ } Vector3 vector38_xzy = (Vector3)vector38Entry.value; Vector3 vector40_xzy = (Vector3)vector40Entry.value; Vector3 vector38 = new Vector3(vector38_xzy.x, vector38_xzy.z, vector38_xzy.y); Vector3 vector40 = new Vector3(vector40_xzy.x, vector40_xzy.z, vector40_xzy.y); Vector3 raymanVec = raymanGAO.transform.position; Vector3 dir = (vector40) - (raymanVec); Vector3 dirFlat = new Vector3(dir.x, 0, dir.z); for (float i = -0.05f; i <= 0.05f; i += 0.02f) { for (float j = -0.05f; j <= 0.05f; j += 0.02f) { Vector3 o = new Vector3(i, 0, j); Debug.DrawRay(vector38 + o, new Vector3(0, -0.9f, 0), Color.red); Debug.DrawRay(vector38 + o, new Vector3(-1f, 0, 0), Color.red); Debug.DrawRay(vector38 + o, new Vector3(1f, 0, 0), Color.red); Debug.DrawRay(vector38 + o, new Vector3(0f, 0, -1f), Color.red); Debug.DrawRay(vector38 + o, new Vector3(0f, 0, 1f), Color.red); Debug.DrawRay(vector40 + o, new Vector3(0, -0.9f, 0), Color.blue); Debug.DrawRay(vector40 + o, new Vector3(-1f, 0, 0), Color.blue); Debug.DrawRay(vector40 + o, new Vector3(1f, 0, 0), Color.blue); Debug.DrawRay(vector40 + o, new Vector3(0f, 0, -1f), Color.blue); Debug.DrawRay(vector40 + o, new Vector3(0f, 0, 1f), Color.blue); Debug.DrawRay(raymanVec + o, dir, Color.blue); Debug.DrawRay(raymanVec + o, dirFlat, Color.blue); } } } } //Debug.draw }