Beispiel #1
0
 public void FramePacketRun(FrameNode frameNode)
 {
     if (battleController != null)
     {
         battleController.OnRunFramePacket(frameNode);
     }
 }
Beispiel #2
0
 public FrameNodeGroup(ProjectionElement descriptor, FrameNode[] nodes, ParameterNames boundingParameters)
 {
     MatchedElement = descriptor;
     Nodes = nodes;
     BoundingParameters = boundingParameters;
     Debug.Assert(nodes.All(k => k.MatchedElement == descriptor));
     Debug.Assert(nodes.All(k => new ParameterNames(k.BoundingParameters.Select(k2=>k2.Key)) == BoundingParameters ));
 }
        /// <summary>
        /// This is the standard Unity function called at every frame, in this particular case it acquire an image if neccesary, and enqueque inside
        /// </summary>
        public void Update()
        {
            if (nextFrameId == long.MinValue)
            {
                return;
            }

            // Method 1 (some problem on Xiaomi, resolve on 1.8 version)
            using (CameraImageBytes image = Frame.CameraImage.AcquireCameraImageBytes())
            {
                if (!image.IsAvailable)
                {
                    return;
                }

                Debug.Log("Acquired frame nextFrameId: " + nextFrameId);

                byte[] yBuffer = new byte[image.Width * image.Height];

                byte[] vuBuffer = new byte[image.Width * (image.Height / 2)];

                Marshal.Copy(image.Y, yBuffer, 0, yBuffer.Length);

                Marshal.Copy(image.V, vuBuffer, 0, vuBuffer.Length);

                Vector3 position = trsmatrix.MultiplyPoint3x4(Frame.Pose.position);

                Quaternion rotation = Frame.Pose.rotation * Quaternion.LookRotation(
                    trsmatrix.GetColumn(2), trsmatrix.GetColumn(1));
                Quaternion rotationNoEdit = new Quaternion(rotation.x, rotation.y, rotation.z, rotation.w);

                Vector3    positionOri = cameraTransform.position;
                Quaternion rotationOri = cameraTransform.rotation;

                FrameNode frame = new FrameNode
                {
                    frameId        = nextFrameId,
                    imageHeight    = image.Height,
                    imageWidth     = image.Width,
                    focalLength    = Frame.CameraImage.ImageIntrinsics.FocalLength,
                    principalPoint = Frame.CameraImage.ImageIntrinsics.PrincipalPoint,
                    position       = position,
                    positionOri    = positionOri,
                    rotation       = rotation,
                    rotationOri    = rotationOri,
                    vuBuffer       = vuBuffer,
                    yBuffer        = yBuffer
                };

                sendingSocket.EnquequeFrame(ref frame);

                frameAcquired.Add(nextFrameId);

                nextFrameId = long.MinValue;
            }
        }
Beispiel #4
0
 /// <summary>
 /// 执行帧包
 /// </summary>
 /// <param name="node">Node.</param>
 public void RunFramePacket(FrameNode node)
 {
     if (node.msgList == null || node.msgList.Length == 0)
     {
         return;
     }
     for (int i = 0; i < node.msgList.Length; i++)
     {
         ExcutePacket(node.msgList[i] as Packet);
     }
 }
Beispiel #5
0
        private readonly bool _getterCheck; //проверка корректности написания ридеров. Замедляет работу, поэтому опция.

        private FrameNode CreateNewNode(FrameNode parent, Guid k)
        {
            var newDict = new Dictionary<string, object>(parent.BoundingParameters);
            if (newDict.ContainsKey(ProducedChildElement.Name))
                newDict[ProducedChildElement.Name] = k;
            else
            {
                newDict.Add(ProducedChildElement.Name, k);
            }
            return new FrameNode(k, ProducedChildElement, parent.Depth + 1, newDict);

        }
Beispiel #6
0
        private readonly bool _getterCheck; //проверка корректности написания ридеров. Замедляет работу, поэтому опция.

        private FrameNode CreateNewNode(FrameNode parent, Guid k)
        {
            var newDict = new Dictionary <string, object>(parent.BoundingParameters);

            if (newDict.ContainsKey(ProducedChildElement.Name))
            {
                newDict[ProducedChildElement.Name] = k;
            }
            else
            {
                newDict.Add(ProducedChildElement.Name, k);
            }
            return(new FrameNode(k, ProducedChildElement, parent.Depth + 1, newDict));
        }
Beispiel #7
0
        void Awake()
        {
            node = FrameNode.Instantiate("Frame Highlighter");
            node.Transform.SetParentLocal(Transform);

            axisResource = ResourcePool.RentDisplay <AxisFrameResource>(node.Transform);
            axisResource.ShadowsEnabled = false;
            axisResource.Emissive       = 1;
            axisResource.OverrideMaterial(Resource.Materials.TransparentLitAlwaysVisible.Object);
            axisResource.Layer = LayerType.IgnoreRaycast;

            tooltip              = ResourcePool.RentDisplay <Tooltip>(node.Transform);
            tooltip.Layer        = LayerType.IgnoreRaycast;
            tooltip.UseAnimation = false;
        }
Beispiel #8
0
        void StartPalms()
        {
            leftPalm = TfListener.GetOrCreateFrame($"{MyId}/controller/left_palm");
            leftPalm.transform.localScale = 0.05f * Vector3.one;

            leftPalm    = TfListener.GetOrCreateFrame($"{MyId}/controller/left_hand");
            node        = FrameNode.Instantiate("Hololens");
            node.Parent = leftPalm;

            leftPalmPose = new Pose(Vector3.up * 1f, Quaternion.identity);
            leftPalm.SetPose(leftPalmPose);
            leftPalm.ParentCanChange = false;

            LeftHandScale = 0.1f;
        }
Beispiel #9
0
 private FilledProjectionFrame FillFrame(FrameNode frame)
 {
     FilledProjectionFrame filledFrame;
     if (frame.MatchedElement is ResourceProjectionElement)
     {
         var filler = _cachier.GetLater(
             (frame.MatchedElement as ResourceProjectionElement).ResourceType, frame.Key);
         filledFrame = new FilledProjectionFrame(frame.MatchedElement, frame.Key,filler);
     }
     else
     {
         filledFrame = new FilledProjectionFrame(frame.MatchedElement, frame.Key);
     }
     var childFrames = frame.ChildNodes.Select(FillFrame).ToArray();
     filledFrame.ChildFrames = childFrames;
     return filledFrame;
 }
Beispiel #10
0
        private FilledProjectionFrame FillFrame(FrameNode frame)
        {
            FilledProjectionFrame filledFrame;

            if (frame.MatchedElement is ResourceProjectionElement)
            {
                var filler = _cachier.GetLater(
                    (frame.MatchedElement as ResourceProjectionElement).ResourceType, frame.Key);
                filledFrame = new FilledProjectionFrame(frame.MatchedElement, frame.Key, filler);
            }
            else
            {
                filledFrame = new FilledProjectionFrame(frame.MatchedElement, frame.Key);
            }
            var childFrames = frame.ChildNodes.Select(FillFrame).ToArray();

            filledFrame.ChildFrames = childFrames;
            return(filledFrame);
        }
Beispiel #11
0
            public override void build()
            {
                if (children.Length == 4)
                {
                    typeNameNode = (TypeNameNode)children[1];
                    methodName   = TermPay(children[3]);
                }
                else if (children.Length == 3)
                {
                    methodName = TermPay(children[2]);
                }
                else
                {
                    throw new Exception();
                }

                frameNode = (FrameNode)children[0];
                // Todo: i am pretty sure the payload of Term<CS_name> can never be null or "" , ... like 95% or  so
            }
Beispiel #12
0
 public ProjectionFrame(FrameNode rootNode)
 {
     RootNode = rootNode;
 }
Beispiel #13
0
 public void OnRunFramePacket(FrameNode frameNode)
 {
     battleSystem.sceneManager.RunFramePacket(frameNode);
 }