static void ScanForCharacters() { availableCharacters = FindObjectsOfType <CharacterAuthoring>(); if (availableCharacters.Length > 0) { character = availableCharacters[0]; } }
void OnGUI() { GUILayout.Label("CHARACTER", EditorStyles.boldLabel); // Character selection if (GUILayout.Button("Scan for chars")) { ScanForCharacters(); } if (availableCharacters != null) { var charNames = new string[availableCharacters.Length]; var selectedindex = -1; for (var i = 0; i < availableCharacters.Length; i++) { charNames[i] = availableCharacters[i].name; if (availableCharacters[i] == character) { selectedindex = i; } } selectedindex = EditorGUILayout.Popup("Char", selectedindex, charNames); if (selectedindex >= 0 && selectedindex < availableCharacters.Length) { character = availableCharacters[selectedindex]; } } if (character == null) { GUILayout.Label("Please select character ..."); return; } GUILayout.Label("DAMAGE", EditorStyles.boldLabel); // Give damage damageInfo.damage = EditorGUILayout.FloatField("damage", damageInfo.damage); damageInfo.impulse = EditorGUILayout.FloatField("impulse", damageInfo.impulse); damageInfo.aimPoint = EditorGUILayout.Vector3Field("aimPoint", damageInfo.aimPoint); damageInfo.direction.eulerAngles = EditorGUILayout.Vector3Field("dir", damageInfo.direction.eulerAngles); if (GUILayout.Button("Give Damage")) { var goe = character.GetComponent <GameObjectEntity>(); var presentState = goe.EntityManager.GetComponentData <Character.InterpolatedData>(goe.Entity); var aimPointWorld = (Vector3)presentState.Position + damageInfo.aimPoint; var damDir = damageInfo.direction * Vector3.forward; var damStart = aimPointWorld - damDir * 2; // var collisionMask = ~0U; // var queryReciever = World.Active.GetExistingSystem<RaySphereQueryReciever>(); // var id = queryReciever.RegisterQuery(new RaySphereQueryReciever.Query() // { // origin = damStart, // direction = damDir, // distance = 1000, // ExcludeOwner = Entity.Null, // hitCollisionTestTick = 1, // radius = 0, // mask = collisionMask, // }); // // RaySphereQueryReciever.Query query; // RaySphereQueryReciever.QueryResult queryResult; // queryReciever.GetResult(id, out query, out queryResult); // // if (queryResult.hit == 1) // { // var damageEventBuffer = goe.EntityManager.GetBuffer<DamageEvent>(queryResult.hitCollisionOwner); // DamageEvent.AddEvent(damageEventBuffer, Entity.Null, damageInfo.damage, // damageInfo.direction * Vector3.forward, damageInfo.impulse); // } } }