Example #1
0
 static void ScanForCharacters()
 {
     availableCharacters = FindObjectsOfType <CharacterAuthoring>();
     if (availableCharacters.Length > 0)
     {
         character = availableCharacters[0];
     }
 }
Example #2
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);
//            }
        }
    }