AtomicWork.d.ts 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. /// <reference path="Atomic.d.ts" />
  2. /// <reference path="ToolCore.d.ts" />
  3. /// <reference path="Editor.d.ts" />
  4. /// <reference path="AtomicPlayer.d.ts" />
  5. declare module Atomic {
  6. export function print(...args: any[]);
  7. export var platform: string;
  8. // subsystems
  9. export var engine: Engine;
  10. export var graphics: Graphics;
  11. export var renderer: Renderer;
  12. export var cache: ResourceCache;
  13. export var input: Input;
  14. export var fileSystem: FileSystem;
  15. export var network: Network;
  16. export var ui: UI;
  17. export var audio: Audio;
  18. export var player: AtomicPlayer.Player;
  19. export var editorMode: Editor.EditorMode;
  20. // end subsystems
  21. /** Base for all event types */
  22. type EventType = string;
  23. /** Base for all event callback data */
  24. type EventData = Object;
  25. /** Base interface for events, contains eventType string and callback */
  26. interface EventMetaData {
  27. /**@internal*/
  28. _eventType?: string;
  29. /**@internal*/
  30. _callback?: (...params) => any;
  31. }
  32. /** Base interface for event data sent to event handlers */
  33. interface EventCallbackMetaData {
  34. /**@internal*/
  35. _eventType?: string;
  36. /**@internal*/
  37. _callbackData?: any;
  38. }
  39. interface NativeEvent extends EventMetaData { }
  40. interface ScriptEvent extends EventMetaData { }
  41. // typed callback generic
  42. type EventCallback<T extends EventMetaData> = (data: T) => void;
  43. /**
  44. * Utility function to wrap up an event callback to pass to subscribeToEvent
  45. * @param eventType The type of event to wrap
  46. * @param callback A callback to call when the event is fired
  47. */
  48. export function ScriptEvent<T extends Atomic.EventMetaData>(eventType: string, callback: Atomic.EventCallback<T>): Atomic.EventMetaData;
  49. /**
  50. * Utility function to wrap up event data to pass to sendEvent
  51. * @param eventType The type of event to wrap
  52. * @param callbackData The data to pass to the event subscriber
  53. */
  54. export function ScriptEventData<T extends Atomic.EventData>(eventType: string, callbackData?: T): Atomic.EventCallbackMetaData;
  55. export interface PathInfo {
  56. pathName: string;
  57. fileName: string;
  58. ext: string;
  59. }
  60. export interface Ray {
  61. /** Ray origin */
  62. origin: Atomic.Vector3;
  63. /** Ray direction */
  64. direction: Atomic.Vector3;
  65. }
  66. export interface Camera {
  67. getScreenRay(x: number, y: number): Atomic.Ray;
  68. }
  69. export interface Octree {
  70. /**
  71. * Cast a ray returing a single hit
  72. * @param {Atomic.Ray} ray
  73. * @param {Atomic.RayQueryLevel} level defaults to Atomic.RAY_TRIANGLE
  74. * @param {number} maxDistance defaults to Atomic.M_INFINITY
  75. * @param {number} drawableFlags defaults to Atomic.DRAWABLE_ANY
  76. * @param {number} viewMask defaults to Atomic.DEFAULT_VIEWMASK
  77. * @return {Atomic.RayQueryResult}
  78. */
  79. rayCastSingle(ray: Atomic.Ray, level?: Atomic.RayQueryLevel, maxDistance?: number, drawableFlags?: number, viewMask?: number):Atomic.RayQueryResult;
  80. /**
  81. * Cast a ray returning all hits
  82. * @param {Atomic.Ray} ray
  83. * @param {Atomic.RayQueryLevel} level defaults to Atomic.RAY_TRIANGLE
  84. * @param {number} maxDistance defaults to Atomic.M_INFINITY
  85. * @param {number} drawableFlags defaults to Atomic.DRAWABLE_ANY
  86. * @param {number} viewMask defaults to Atomic.DEFAULT_VIEWMASK
  87. * @return {Atomic.RayQueryResult}
  88. */
  89. rayCast(ray: Atomic.Ray, level?: Atomic.RayQueryLevel, maxDistance?: number, drawableFlags?: number, viewMask?: number):Atomic.RayQueryResult[];
  90. }
  91. export interface RayQueryResult {
  92. /** Hit position in world space. */
  93. position: Atomic.Vector3;
  94. /** Hit normal in world space. Negation of ray direction if per-triangle data not available. */
  95. normal: Atomic.Vector3;
  96. /** Hit texture position */
  97. textureUV: Atomic.Vector2;
  98. /** Distance from ray origin. */
  99. distance:number;
  100. /** Drawable. */
  101. drawable: any;
  102. /** Scene node. */
  103. node: Atomic.Node;
  104. /** Drawable specific subobject if applicable. */
  105. subObject: number;
  106. }
  107. export interface AttributeInfo {
  108. type: VariantType;
  109. name: string;
  110. mode: number; // AM_*
  111. defaultValue: string;
  112. enumNames: string[];
  113. resourceTypeName: string;
  114. dynamic: boolean;
  115. tooltip: string;
  116. isArray:boolean;
  117. fixedArraySize:number;
  118. }
  119. export interface ShaderParameter {
  120. name: string;
  121. value: any;
  122. valueString: string;
  123. typeName: string;
  124. type: VariantType;
  125. }
  126. export function getArguments(): Array<string>;
  127. export function getEngine(): Engine;
  128. export function getInput(): Input;
  129. export function getGraphics(): Graphics;
  130. export function getFileSystem(): FileSystem;
  131. export function getResourceCache(): ResourceCache;
  132. export function getRenderer(): Atomic.Renderer;
  133. export function getNetwork(): Atomic.Network;
  134. export function getUI(): Atomic.UI;
  135. export function assert();
  136. export function js_module_read_file(path: string);
  137. export function openConsoleWindow();
  138. export function script(script: string): boolean;
  139. export function destroy(node: Atomic.Node): boolean;
  140. export function destroy(scene: Atomic.Scene): boolean;
  141. export function destroy(component: Atomic.JSComponent): boolean;
  142. export function getParentPath(path: string): string;
  143. export function getPath(path: string): string;
  144. export function addTrailingSlash(path: string): string;
  145. export function getExtension(path: string): string;
  146. export function splitPath(path: string): PathInfo;
  147. }
  148. declare module ToolCore {
  149. export var toolEnvironment: ToolEnvironment;
  150. export var toolSystem: ToolSystem;
  151. export var assetDatabase: AssetDatabase;
  152. export var licenseSystem: LicenseSystem;
  153. export var buildSystem: BuildSystem;
  154. export var netProjectSystem: NETProjectSystem;
  155. export function getToolEnvironment(): ToolEnvironment;
  156. export function getToolSystem(): ToolSystem;
  157. export function getAssetDatabase(): AssetDatabase;
  158. export function getLicenseSystem(): LicenseSystem;
  159. }
  160. declare module WebView {
  161. /**
  162. * interface for sending data to the web view in a standard way.
  163. */
  164. export interface WebMessageEventResponse<T> {
  165. response: T
  166. }
  167. }