BBCMicrobit.pas обновление
This commit is contained in:
parent
357d756543
commit
59aeba2096
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "5";
|
||||
public const string Build = "0";
|
||||
public const string Revision = "2234";
|
||||
public const string Revision = "2237";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=0
|
||||
%REVISION%=2234
|
||||
%MINOR%=5
|
||||
%REVISION%=2237
|
||||
%COREVERSION%=0
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -48,6 +48,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<HTML><HEAD><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||||
<param name="Keyword" value="AddChild">
|
||||
<param name="Keyword" value="AddChilds">
|
||||
<param name="Keyword" value="Count">
|
||||
<param name="Keyword" value="Destroy">
|
||||
<param name="Keyword" value="Items">
|
||||
|
|
@ -15,6 +16,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@
|
|||
|
||||
<tr><tr><td><code><b>procedure</b> AddChild(obj: Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> AddChilds(<b>params</b> arr: <b>array</b> <b>of</b> Object3D);</code>
|
||||
<br> Äîáàâèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> Destroy; override;</code>
|
||||
<br> Óäàëèòü äî÷åðíèé ïîäîáúåêò</td></tr>
|
||||
<tr><td><code><b>procedure</b> RemoveChild(obj: Object3D);</code>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<HTML><HEAD><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||||
<param name="Keyword" value="OnDrawTime">
|
||||
<param name="Keyword" value="OnDrawFrame">
|
||||
<param name="Keyword" value="OnInit">
|
||||
<param name="Keyword" value="OnKeyDown">
|
||||
<param name="Keyword" value="OnKeyPress">
|
||||
<param name="Keyword" value="OnKeyUp">
|
||||
|
|
@ -8,8 +9,10 @@
|
|||
<param name="Keyword" value="OnMouseUp"></object>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Ñîáûòèÿ ìîäóëÿ Graph3D</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code>OnDrawTime: <b>procedure</b>(dt: real);</code>
|
||||
<br> Ñîáûòèå ïåðåðèñîâêè ãðàôè÷åñêîãî 3D-îêíà</td></tr>
|
||||
<table border=0 cellpadding=5><tr><td><code>OnDrawFrame: <b>procedure</b>(dt: real);</code>
|
||||
<br> Событие перерисовки графического 3D-окна.Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана</td></tr>
|
||||
<tr><td><code>OnInit: <b>procedure</b>;</code>
|
||||
<br> Событие инициализации объектов графического окна. Используется чтобы объекты не прорисовывались до конца инициализации</td></tr>
|
||||
<tr><td><code>OnKeyDown: <b>procedure</b>(k: Key);</code>
|
||||
<br> Ñîáûòèå íàæàòèÿ êëàâèøè</td></tr>
|
||||
<tr><td><code>OnKeyPress: <b>procedure</b>(ch: char);</code>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Короткие функции модуля Graph3D</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code>/// Возвращает цвет по красной, зеленой и синей составляющей (в диапазоне 0..255);</code>
|
||||
<br> cedure Invoke(p: ()->());</td></tr>
|
||||
<br> cedure Redraw(p: ()->());</td></tr>
|
||||
<tr><td><code>/// Возвращает цвет по красной, зеленой и синей составляющей и параметру прозрачности (в диапазоне 0..255);</code>
|
||||
<br> ction RGB(r, g, b: byte): Color;</td></tr>
|
||||
<tr><td><code>/// Возвращает серый цвет с интенсивностью b;</code>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<HTML><HEAD><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||||
<param name="Keyword" value="OnDrawFrame">
|
||||
<param name="Keyword" value="OnKeyDown">
|
||||
<param name="Keyword" value="OnKeyPress">
|
||||
<param name="Keyword" value="OnKeyUp">
|
||||
|
|
@ -22,5 +23,7 @@
|
|||
<br> Ñîáûòèå íàæàòèÿ ñèìâîëüíîé êëàâèøè</td></tr>
|
||||
<tr><td><code>OnResize: <b>procedure</b>;</code>
|
||||
<br> Ñîáûòèå èçìåíåíèÿ ðàçìåðà ãðàôè÷åñêîãî îêíà</td></tr>
|
||||
<tr><td><code>OnDrawFrame: <b>procedure</b>(dt: real);</code>
|
||||
<br> Ñîáûòèå ïåðåðèñîâêè ãðàôè÷åñêîãî îêíà</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -1 +1 @@
|
|||
3.5.0.2234
|
||||
3.5.0.2237
|
||||
|
|
|
|||
|
|
@ -106,11 +106,12 @@ SectionEnd
|
|||
LangString DESC_INTERNAL_ERROR_REPORT_Desc ${LANG_RUSSIAN} "Позволяет отправить разработчикам отчет о ошибках в работе компилятора"
|
||||
LangString DESC_INTERNAL_ERROR_REPORT_Desc ${LANG_ENGLISH} " "
|
||||
LangString DESC_PT4_Desc ${LANG_RUSSIAN} "Электронный задачник Programming Taskbook Copyright (c)М.Э.Абрамян, 1998-2017"
|
||||
LangString DESC_PT4_Desc ${LANG_ENGLISH} "Programming Taskbook Copyright (c) M.E. Abramyan, 1998-2017"
|
||||
LangString DESC_PT4_Desc ${LANG_ENGLISH} "Programming Taskbook Copyright (c) M.E. Abramyan, 1998-2019"
|
||||
LangString DESC_Samples_Desc ${LANG_RUSSIAN} "Файлы примеров"
|
||||
LangString DESC_Samples_Desc ${LANG_ENGLISH} "Samples"
|
||||
LangString DESC_RusLoc_Desc ${LANG_RUSSIAN} "Поддержка русcкого языка"
|
||||
LangString DESC_RusLoc_Desc ${LANG_ENGLISH} " "
|
||||
LangString DESC_RusLoc_Desc ${LANG_UKR} "Поддержка украинского языка"
|
||||
LangString DESC_EngLoc_Desc ${LANG_RUSSIAN} "Поддержка английского языка"
|
||||
LangString DESC_EngLoc_Desc ${LANG_ENGLISH} " "
|
||||
LangString DESC_Framework_Desc ${LANG_RUSSIAN} "Платформа необходима для работы компилятора и программ, работающих на этой платформе"
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.5.0.2234'
|
||||
!define VERSION '3.5.0.2237'
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@
|
|||
Collections, Arrays, Core, FormsABC, MPI, ClientServer, Speech, Sounds, Countries,
|
||||
ABCDatabases,BlockFileOfT,Controls,
|
||||
OpenCL, OpenCLABC,
|
||||
OpenGL, OpenGLABC
|
||||
OpenGL, OpenGLABC,
|
||||
BBCMicroBit
|
||||
;
|
||||
|
||||
begin
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@
|
|||
File ..\bin\Lib\Countries.pcu
|
||||
File ..\bin\Lib\Graph3D.pcu
|
||||
File ..\bin\Lib\GraphABCHelper.pcu
|
||||
File ..\bin\Lib\BBCMicroBit.pcu
|
||||
File ..\bin\Lib\IniFile.pcu
|
||||
File ..\bin\Lib\PABCSystem.pcu
|
||||
File ..\bin\Lib\PABCExtensions.pcu
|
||||
|
|
@ -166,6 +167,7 @@
|
|||
${AddFile} "Countries.pcu"
|
||||
${AddFile} "Graph3D.pcu"
|
||||
${AddFile} "GraphABCHelper.pcu"
|
||||
${AddFile} "BBCMicroBit.pcu"
|
||||
${AddFile} "IniFile.pcu"
|
||||
${AddFile} "PABCSystem.pcu"
|
||||
${AddFile} "PABCExtensions.pcu"
|
||||
|
|
@ -241,6 +243,7 @@
|
|||
File ..\bin\Lib\Countries.pas
|
||||
File ..\bin\Lib\Graph3D.pas
|
||||
File ..\bin\Lib\GraphABCHelper.pas
|
||||
File ..\bin\Lib\BBCMicroBit.pas
|
||||
File ..\bin\Lib\IniFile.pas
|
||||
File ..\bin\Lib\PABCSystem.pas
|
||||
File ..\bin\Lib\PABCExtensions.pas
|
||||
|
|
@ -302,6 +305,7 @@
|
|||
${AddFile} "Countries.pas"
|
||||
${AddFile} "Graph3D.pas"
|
||||
${AddFile} "GraphABCHelper.pas"
|
||||
${AddFile} "BBCMicroBit.pas"
|
||||
${AddFile} "IniFile.pas"
|
||||
${AddFile} "PABCSystem.pas"
|
||||
${AddFile} "PABCExtensions.pas"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
Section "Українська" UkrLoc
|
||||
SectionIn 1 2 RO
|
||||
SectionIn 1
|
||||
SetOutPath "$INSTDIR\Lng\Ukr"
|
||||
File "..\bin\Lng\Ukr\.LanguageName"
|
||||
File "..\bin\Lng\Ukr\*.dat"
|
||||
|
|
|
|||
190
bin/Lib/BBCMicrobit.pas
Normal file
190
bin/Lib/BBCMicrobit.pas
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
// BBC Micro:bit communication module
|
||||
|
||||
unit BBCMicrobit;
|
||||
|
||||
interface
|
||||
|
||||
/// Исключение для информирования об отсутствии подключенного устройства
|
||||
type
|
||||
NoUBSComPortsException = class(Exception) end;
|
||||
NoBBCBoardFoundException = class(Exception) end;
|
||||
|
||||
/// Класс для взаимодействия с устройством BBC Micro:bit
|
||||
type
|
||||
Microbit = class(System.IDisposable)
|
||||
|
||||
protected
|
||||
/// Порт для связи с устройством
|
||||
Port: System.IO.Ports.SerialPort;
|
||||
|
||||
/// Обработчик данных от платы. Принимает только строки
|
||||
procedure DataReceivedHandler(sender: object; e: System.IO.Ports.SerialDataReceivedEventArgs);
|
||||
|
||||
|
||||
|
||||
public
|
||||
|
||||
/// Копирование файла прошивки в BBC:Microbit
|
||||
class procedure CopyFile(filename : string);
|
||||
|
||||
public
|
||||
/// Обработчик события распознавания
|
||||
OnReadString: procedure(Message: string);
|
||||
|
||||
/// Список USB COM-портов с идентификаторами Microbit
|
||||
class function GetUsbPortNames: List<string>;
|
||||
begin
|
||||
// Вот такие параметры у каждой платы (по крайней мере сейчас)
|
||||
var pattern := '^VID_0D28.PID_0204';
|
||||
var _rx := new System.Text.RegularExpressions.Regex(pattern, RegexOptions.IgnoreCase);
|
||||
Result := new List<string>;
|
||||
var {Microsoft.Win32.RegistryKey} rk1 := Microsoft.Win32.Registry.LocalMachine;
|
||||
var {Microsoft.Win32.RegistryKey} rk2 := rk1.OpenSubKey('SYSTEM\\CurrentControlSet\\Enum');
|
||||
|
||||
foreach s3: string in rk2.GetSubKeyNames do
|
||||
begin
|
||||
var rk3 := rk2.OpenSubKey(s3);
|
||||
foreach s: string in rk3.GetSubKeyNames do
|
||||
if _rx.Match(s).Success then
|
||||
begin
|
||||
var {RegistryKey} rk4 := rk3.OpenSubKey(s);
|
||||
foreach s2: string in rk4.GetSubKeyNames do
|
||||
begin
|
||||
var {RegistryKey} rk5 := rk4.OpenSubKey(s2);
|
||||
var {RegistryKey} rk6 := rk5.OpenSubKey('Device Parameters');
|
||||
var {string} portName := string(rk6.GetValue('PortName'));
|
||||
if not String.IsNullOrEmpty(portName) and System.IO.Ports.SerialPort.GetPortNames.Contains(portName) then
|
||||
begin
|
||||
Result.Add(string(rk6.GetValue('PortName')));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор объекта для взаимодействия с Microbit
|
||||
/// </summary>
|
||||
/// <param name="Handler">Процедура-обработчик, вызываемая для каждой принятой строки</param>
|
||||
/// <param name="PortName">Имя COM-порта, можно не указывать</param>
|
||||
constructor Create(Handler: procedure(s: string) := nil; PortName: string := '');
|
||||
begin
|
||||
OnReadString := Handler;
|
||||
// Инициализируем виртуальный COM-порт, который связан с USB-устройством.
|
||||
Port := new System.IO.Ports.SerialPort;
|
||||
|
||||
if PortName.Length > 0 then
|
||||
// Порт указан явно при создании объекта класса, значит его и используем
|
||||
Port.PortName := PortName
|
||||
else
|
||||
begin
|
||||
// Порт явно не указан, приходится искать самостоятельно
|
||||
// Получаем список всех похожих COM-портов (по VID и PID)
|
||||
var portNames := GetUsbPortNames;
|
||||
// Если подходящих портов нет - выбрасываем исключение
|
||||
if portNames.Count = 0 then
|
||||
raise new NoUBSComPortsException('Не найдено устройство Microbit')
|
||||
else
|
||||
// Берём первый попавшийся. Если устройств несколько, то надо явно указывать
|
||||
Port.PortName := portNames[0];
|
||||
end;
|
||||
|
||||
// Эти параметры зашиты явно, рекомендованы руководством по Microbit
|
||||
Port.BaudRate := 115200; //Указываем скорость.
|
||||
Port.DataBits := 8;
|
||||
Port.Parity := System.IO.Ports.Parity.None;
|
||||
Port.StopBits := System.IO.Ports.StopBits.One;
|
||||
Port.DataReceived += DataReceivedHandler;
|
||||
Port.Open; //Открываем порт
|
||||
end;
|
||||
|
||||
/// Отправка строки на устройство Microbit
|
||||
procedure Send(message: string) := Port.WriteLine(message);
|
||||
|
||||
/// Деструктор - закрывает COM-порт
|
||||
destructor Destroy;
|
||||
begin
|
||||
if Port <> nil then
|
||||
begin
|
||||
Port.Close;
|
||||
Port := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure Dispose;
|
||||
begin
|
||||
Destroy;
|
||||
end;
|
||||
|
||||
procedure Finalize; override;
|
||||
begin
|
||||
Destroy
|
||||
end;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
/// Иногда строки приходят "склеенные" – нужно разбить по служебным символам
|
||||
/// Эта функция возвращает первую группу символов из строки, ограниченную
|
||||
/// служебными #10 или #13, сама подстрока из строки удаляется.
|
||||
function ParseStr(var s : string) : string;
|
||||
begin
|
||||
var iStart := 1;
|
||||
var len := s.Length;
|
||||
|
||||
while (iStart<=len) and ((s[iStart] = #10) or (s[iStart] = #13)) do
|
||||
iStart += 1;
|
||||
|
||||
var iEnd := iStart + 1;
|
||||
|
||||
while (iEnd<=len) and (s[iEnd] <> #10) and (s[iEnd] <> #13) do
|
||||
iEnd += 1;
|
||||
|
||||
// Копируем фрагмент, но с проверкой
|
||||
if iEnd-iStart > 0 then
|
||||
Result := copy(s, iStart, iEnd-iStart)
|
||||
else
|
||||
Result := '';
|
||||
|
||||
while (iEnd<len) and ((s[iEnd+1] = #10) or (s[iEnd+1] = #13)) do
|
||||
iEnd += 1;
|
||||
Delete(s,1,iEnd);
|
||||
end;
|
||||
|
||||
procedure Microbit.DataReceivedHandler(sender: object; e: System.IO.Ports.SerialDataReceivedEventArgs);
|
||||
begin
|
||||
var sp := sender as System.IO.Ports.SerialPort;
|
||||
|
||||
// Читаем строку по ReadLine
|
||||
var message := sp.ReadLine;
|
||||
|
||||
|
||||
while message.Length > 0 do
|
||||
begin
|
||||
// Очередная подстрока
|
||||
var block := ParseStr(message).TrimEnd(' ');
|
||||
if (block.Length > 0) and (OnReadString <> nil) then
|
||||
OnReadString(block);
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure MicroBit.CopyFile(filename : string);
|
||||
begin
|
||||
var allDrives := System.IO.DriveInfo.GetDrives();
|
||||
|
||||
foreach d: System.IO.DriveInfo in allDrives do
|
||||
begin
|
||||
if d.IsReady then
|
||||
if d.VolumeLabel = 'MICROBIT' then
|
||||
begin
|
||||
var dest : string := d.RootDirectory.ToString + '\\' + System.IO.Path.GetFileName(filename);
|
||||
System.IO.File.Copy(filename, dest);
|
||||
sleep(2000);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
raise new NoBBCBoardFoundException('Не найдено устройство Microbit');
|
||||
|
||||
end;
|
||||
|
||||
end.
|
||||
|
|
@ -75,8 +75,8 @@ var
|
|||
//>> Короткие функции модуля Graph3D # Graph3D short functions
|
||||
// -----------------------------------------------------
|
||||
|
||||
procedure Invoke(p: ()->());
|
||||
|
||||
/// Процедура ускорения вывода. Обновляет экран после всех изменений
|
||||
procedure Redraw(p: ()->());
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей (в диапазоне 0..255)
|
||||
function RGB(r, g, b: byte): Color;
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей и параметру прозрачности (в диапазоне 0..255)
|
||||
|
|
@ -182,6 +182,13 @@ type
|
|||
property ShowCameraInfo: boolean read GetSCI write SetSCI;
|
||||
/// Отображать ли ViewCube
|
||||
property ShowViewCube: boolean read GetSVC write SetSVC;
|
||||
/// Не отображать координатную систему, координатную сетку и ViewCube
|
||||
procedure HideAll;
|
||||
begin
|
||||
ShowCoordinateSystem := False;
|
||||
ShowGridLines := False;
|
||||
ShowViewCube := False;
|
||||
end;
|
||||
/// Заголовок пространства отображения
|
||||
property Title: string read GetT write SetT;
|
||||
/// Подзаголовок пространства отображения
|
||||
|
|
@ -410,10 +417,18 @@ type
|
|||
begin
|
||||
Result := CreateObject;
|
||||
Result.CloneChildren(Self);
|
||||
|
||||
var ind := (model.Transform as Transform3DGroup).Children.IndexOf(rotatetransform);
|
||||
(Result.model.Transform as Transform3DGroup).Children[ind] := (model.Transform as Transform3DGroup).Children[ind].Clone;
|
||||
Result.rotatetransform := (Result.model.Transform as Transform3DGroup).Children[ind] as MatrixTransform3d;
|
||||
|
||||
ind := transfgroup.Children.IndexOf(rotatetransform_absolute);
|
||||
(Result.model.Transform as Transform3DGroup).Children[ind] := (model.Transform as Transform3DGroup).Children[ind].Clone;
|
||||
Result.rotatetransform_absolute := (Result.model.Transform as Transform3DGroup).Children[ind] as MatrixTransform3d;
|
||||
|
||||
ind := transfgroup.Children.IndexOf(transltransform);
|
||||
(Result.model.Transform as Transform3DGroup).Children[ind] := (model.Transform as Transform3DGroup).Children[ind].Clone;
|
||||
Result.transltransform := (Result.model.Transform as Transform3DGroup).Children[ind] as TranslateTransform3D;
|
||||
|
||||
//(Result.model.Transform as Transform3DGroup).Children[1] := (model.Transform as Transform3DGroup).Children[1].Clone;
|
||||
//(Result.model.Transform as Transform3DGroup).Children[2] := (model.Transform as Transform3DGroup).Children[2].Clone;
|
||||
//(Result.model.Transform as Transform3DGroup).Children[3] := (model.Transform as Transform3DGroup).Children[3].Clone; //- почему-то это не нужно!!! с ним не работает!
|
||||
|
|
@ -475,6 +490,24 @@ type
|
|||
/// Позиция 3D-объекта
|
||||
property Position: Point3D read GetPos write MoveToProp;
|
||||
|
||||
/// Будущая позиция 3D-объекта по прошествии времени dt
|
||||
function PositionAfterTime(dt: real): Point3D;
|
||||
begin
|
||||
var dx := Direction.X;
|
||||
var dy := Direction.Y;
|
||||
var dz := Direction.Z;
|
||||
var len := Sqrt(dx*dx+dy*dy+dz*dz);
|
||||
if len = 0 then
|
||||
begin
|
||||
Result := Position;
|
||||
exit;
|
||||
end;
|
||||
var dvx := dx/len*Velocity;
|
||||
var dvy := dy/len*Velocity;
|
||||
var dvz := dz/len*Velocity;
|
||||
Result := P3D(X + dvx*dt, Y + dvy*dt, Z + dvz*dt);
|
||||
end;
|
||||
|
||||
/// Масштабирует 3D-объект в f раз
|
||||
function Scale(f: real): Object3D :=
|
||||
Invoke&<Object3D>(()->begin
|
||||
|
|
@ -707,6 +740,8 @@ type
|
|||
public
|
||||
/// Добавить дочерний подобъект
|
||||
procedure AddChild(obj: Object3D) := Invoke(AddT, obj);
|
||||
/// Добавить дочерний подобъект
|
||||
procedure AddChilds(params arr: array of Object3D) := arr.ForEach(obj->AddChild(obj));
|
||||
/// Удалить дочерний подобъект
|
||||
procedure RemoveChild(obj: Object3D) := Invoke(RemoveT, obj);
|
||||
/// i-тый дочерний подобъект
|
||||
|
|
@ -2643,8 +2678,9 @@ var
|
|||
OnKeyUp: procedure(k: Key);
|
||||
/// Событие нажатия символьной клавиши
|
||||
OnKeyPress: procedure(ch: char);
|
||||
/// Событие перерисовки графического 3D-окна
|
||||
OnDrawTime: procedure(dt: real);
|
||||
/// Событие перерисовки графического 3D-окна.
|
||||
///Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана
|
||||
OnDrawFrame: procedure(dt: real);
|
||||
|
||||
var
|
||||
// -----------------------------------------------------
|
||||
|
|
@ -2668,6 +2704,8 @@ var
|
|||
OrtY: Vector3D := V3D(0, 1, 0);
|
||||
/// Орт (единичный вектор) оси OZ
|
||||
OrtZ: Vector3D := V3D(0, 0, 1);
|
||||
/// Нулевой вектор
|
||||
ZeroVector: Vector3D := V3D(0, 0, 0);
|
||||
/// Точка начала координат
|
||||
Origin: Point3D := P3D(0, 0, 0);
|
||||
/// Плоскость OXY
|
||||
|
|
@ -2694,7 +2732,7 @@ procedure __FinalizeModule__;
|
|||
|
||||
implementation
|
||||
|
||||
procedure Invoke(p: ()->()) := GraphWPFBase.Invoke(p);
|
||||
procedure Redraw(p: ()->()) := GraphWPFBase.Invoke(p);
|
||||
|
||||
function RGB(r, g, b: byte) := Color.Fromrgb(r, g, b);
|
||||
function ARGB(a, r, g, b: byte) := Color.FromArgb(a, r, g, b);
|
||||
|
|
@ -3435,7 +3473,6 @@ function PointOnPlane(Plane: Plane3D; x, y: real): Point3D := Plane.PointOnPlane
|
|||
function NearestPointOnLine(Line: Ray3D; x, y: real): Point3D := Line.NearestPointOnLine(x,y);
|
||||
|
||||
|
||||
|
||||
// Методы расширения для анимаций
|
||||
|
||||
function Sec(Self: integer): real; extensionmethod := Self;
|
||||
|
|
@ -3716,25 +3753,25 @@ var LastUpdatedTime := new System.TimeSpan(0);
|
|||
|
||||
procedure RenderFrame(o: Object; e: System.EventArgs);
|
||||
begin
|
||||
if OnDrawTime<>nil then
|
||||
if OnDrawFrame<>nil then
|
||||
begin
|
||||
var e1 := RenderingEventArgs(e).RenderingTime;
|
||||
var dt := e1 - LastUpdatedTime;
|
||||
if LastUpdatedTime.TotalMilliseconds<>0 then
|
||||
if OnDrawTime<>nil then
|
||||
OnDrawTime(dt.Milliseconds/1000);
|
||||
if OnDrawFrame<>nil then
|
||||
OnDrawFrame(dt.Milliseconds/1000);
|
||||
LastUpdatedTime := e1;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure BeginFrameBasedAnimationTime(Draw: procedure(dt: real));
|
||||
begin
|
||||
OnDrawTime := Draw;
|
||||
OnDrawFrame := Draw;
|
||||
end;
|
||||
|
||||
procedure EndFrameBasedAnimation;
|
||||
begin
|
||||
OnDrawTime := nil;
|
||||
OnDrawFrame := nil;
|
||||
end;
|
||||
|
||||
|
||||
|
|
@ -3788,6 +3825,8 @@ type
|
|||
/// --- SystemKeyEvents
|
||||
procedure SystemOnKeyDown(sender: Object; e: System.Windows.Input.KeyEventArgs);
|
||||
begin
|
||||
if (e.Key = Key.F4) and (e.KeyboardDevice.Modifiers = ModifierKeys.Control) then
|
||||
Close;
|
||||
if Graph3D.OnKeyDown <> nil then
|
||||
Graph3D.OnKeyDown(e.Key);
|
||||
e.Handled := True;
|
||||
|
|
@ -3876,7 +3915,6 @@ begin
|
|||
end;
|
||||
|
||||
MainWindow := new Graph3DWindow;
|
||||
//MainWindow.MainPanel;
|
||||
|
||||
mre.Set();
|
||||
|
||||
|
|
|
|||
|
|
@ -345,7 +345,7 @@ function Rect(x,y,w,h: real): GRect;
|
|||
function ColorBrush(c: Color): GBrush;
|
||||
/// Возвращает однотонное цветное перо, заданное цветом
|
||||
function ColorPen(c: Color): GPen;
|
||||
/// Процедура ускорения вывода нескольких графических команд
|
||||
/// Процедура ускорения вывода. Обновляет экран после всех изменений
|
||||
procedure Redraw(d: ()->());
|
||||
|
||||
|
||||
|
|
@ -483,6 +483,9 @@ var OnKeyUp: procedure(k: Key);
|
|||
var OnKeyPress: procedure(ch: char);
|
||||
/// Событие изменения размера графического окна
|
||||
var OnResize: procedure;
|
||||
/// Событие перерисовки графического окна.
|
||||
///Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана
|
||||
var OnDrawFrame: procedure(dt: real) := nil;
|
||||
|
||||
//{{{--doc: Конец секции 3 }}}
|
||||
|
||||
|
|
@ -1566,7 +1569,6 @@ procedure SystemOnResize(sender: Object; e: SizeChangedEventArgs) :=
|
|||
|
||||
var OnDraw: procedure := nil;
|
||||
var OnDraw1: procedure(frame: integer) := nil;
|
||||
var OnDrawTime: procedure(dt: real) := nil;
|
||||
|
||||
var FrameRate := 61; // кадров в секунду. Можно меньше!
|
||||
var LastUpdatedTime := new System.TimeSpan(integer.MinValue);
|
||||
|
|
@ -1575,12 +1577,12 @@ var FrameNum := 0;
|
|||
|
||||
procedure RenderFrame(o: Object; e: System.EventArgs);
|
||||
begin
|
||||
if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawTime<>nil) then
|
||||
if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawFrame<>nil) then
|
||||
begin
|
||||
var e1 := RenderingEventArgs(e).RenderingTime;
|
||||
var dt := e1 - LastUpdatedTime;
|
||||
var delta := 1000/Framerate; // через какое время обновлять
|
||||
if OnDrawTime<>nil then
|
||||
if OnDrawFrame<>nil then
|
||||
delta := 0; // перерисовывать когда придёт время
|
||||
if dt.TotalMilliseconds < delta then
|
||||
exit
|
||||
|
|
@ -1591,8 +1593,8 @@ begin
|
|||
OnDraw()
|
||||
else if OnDraw1<>nil then
|
||||
OnDraw1(FrameNum)
|
||||
else if OnDrawTime<>nil then
|
||||
OnDrawTime(dt.Milliseconds/1000);
|
||||
else if OnDrawFrame<>nil then
|
||||
OnDrawFrame(dt.Milliseconds/1000);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -1614,7 +1616,7 @@ end;
|
|||
|
||||
procedure BeginFrameBasedAnimationTime(Draw: procedure(dt: real));
|
||||
begin
|
||||
OnDrawTime := Draw;
|
||||
OnDrawFrame := Draw;
|
||||
end;
|
||||
|
||||
procedure EndFrameBasedAnimation;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ type
|
|||
g.LastChildFill := True;
|
||||
Result := g;
|
||||
end;
|
||||
|
||||
procedure InitMainGraphControl; virtual;
|
||||
begin
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ function Rect(x,y,w,h: real): GRect;
|
|||
function ColorBrush(c: Color): SolidColorBrush;
|
||||
/// Возвращает случайную точку графического окна. Необязательный параметр z задаёт отступ от края
|
||||
function RandomWindowPoint(z: real := 0): GPoint;
|
||||
/// Процедура ускорения вывода нескольких графических команд
|
||||
/// Процедура ускорения вывода. Обновляет экран после всех изменений
|
||||
procedure Redraw(p: ()->());
|
||||
//{{{--doc: Конец секции 1 }}}
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in a new issue