예제 #1
0
        public void Initialize()
        {
            IAvatar     mainAvatar = _avatarService.GetMain();
            IAvatarBody avatarBody = _avatarBodySystem.GetOrCreate(_mainAvatarBodyType);

            avatarBody.SetAvatar(mainAvatar);
        }
예제 #2
0
        public IAvatarBody GetOrCreate(byte bodyType)
        {
            IAvatarBody body = _avatarBodyRepository.Get(bodyType);

            if (body == null)
            {
                body = Create(bodyType);
            }

            _avatarBodyRepository.Save(bodyType, body);

            return(body);
        }
예제 #3
0
        public (IAvatar, IAvatarBody) Build(AvatarID avatarID, byte bodyType)
        {
            IAvatar avatar = _avatarService.Find(avatarID);

            if (avatar == null)
            {
                avatar = _avatarService.Create();
            }

            IAvatarBody avatarBody = _avatarBodySystem.GetOrCreate(bodyType);

            avatarBody.SetAvatar(avatar);

            return(avatar, avatarBody);
        }
예제 #4
0
        public void Release(IAvatarBody body)
        {
            if (body == null)
            {
                return;
            }

            if (body is MonoBehaviour missingCheck)
            {
                if (missingCheck == null)
                {
                    return;
                }
            }

            body.Active(false);
            _avatarBodyRepository.Release(body);
        }
예제 #5
0
        public IAvatarBody Create(byte bodyType)
        {
            AvatarBodyID id = (this as IAvatarBodyIDGenerator).Generate();

            CreateAvatarBodyArgs args = new CreateAvatarBodyArgs
            {
                BodyType = bodyType,
                BodyID   = id,
            };

            IAvatarBody body = _avatarBodyFactory.Create(args);

            body.Transform.name = $"AvatarBody({args.BodyType.ToString()}) - [{id.ID.ToString()}]";
            body.Transform.SetParent(null);
            body.OnAvatarBodyFree += HandleOnAvatarBodyFree;

            return(body);
        }
예제 #6
0
 private void HandleOnAvatarBodyFree(IAvatarBody avatarBody)
 {
     Release(avatarBody);
 }